Merge remote-tracking branch 'aosp/master' into update
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a7f09fb..c03edd7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 2.8.11)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
option(ENABLE_AMD_EXTENSIONS "Enables support of AMD-specific extensions" OFF)
diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp
index cc2b742..e479881 100644
--- a/OGLCompilersDLL/InitializeDll.cpp
+++ b/OGLCompilersDLL/InitializeDll.cpp
@@ -34,7 +34,7 @@
#define SH_EXPORTING
-#include <assert.h>
+#include <cassert>
#include "InitializeDll.h"
#include "../glslang/Include/InitializeGlobals.h"
diff --git a/README-spirv-remap.txt b/README-spirv-remap.txt
index 8e3259f..3e5288a 100644
--- a/README-spirv-remap.txt
+++ b/README-spirv-remap.txt
@@ -98,7 +98,7 @@
On error, the function supplied to registerErrorHandler() will be invoked.
This can be a standard C/C++ function, a lambda function, or a functor.
The default handler simply calls exit(5); The error handler is a static
-members, so need only be set up once, not once per spirvbin_t instance.
+member, so need only be set up once, not once per spirvbin_t instance.
Log messages are supplied to registerLogHandler(). By default, log
messages are eaten silently. The log handler is also a static member.
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index 9628a82..48a6c46 100755
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -3,21 +3,27 @@
InReadableOrder.cpp
Logger.cpp
SpvBuilder.cpp
- SPVRemapper.cpp
doc.cpp
disassemble.cpp)
+set(SPVREMAP_SOURCES
+ SPVRemapper.cpp
+ doc.cpp)
+
set(HEADERS
spirv.hpp
GLSL.std.450.h
GlslangToSpv.h
Logger.h
SpvBuilder.h
- SPVRemapper.h
spvIR.h
doc.h
disassemble.h)
+set(SPVREMAP_HEADERS
+ SPVRemapper.h
+ doc.h)
+
if(ENABLE_AMD_EXTENSIONS)
set(HEADERS
GLSL.ext.AMD.h)
@@ -26,9 +32,13 @@
add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
+add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
+set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
+
if(WIN32)
source_group("Source" FILES ${SOURCES} ${HEADERS})
+ source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif(WIN32)
-install(TARGETS SPIRV
+install(TARGETS SPIRV SPVRemapper
ARCHIVE DESTINATION lib)
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 6aec9e6..7286588 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -130,13 +130,14 @@
spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim);
spv::Id accessChainLoad(const glslang::TType& type);
void accessChainStore(const glslang::TType& type, spv::Id rvalue);
+ void multiTypeStore(const glslang::TType&, spv::Id rValue);
glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const;
int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset, int& nextOffset, glslang::TLayoutPacking, glslang::TLayoutMatrix);
void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
- bool isShaderEntrypoint(const glslang::TIntermAggregate* node);
+ bool isShaderEntryPoint(const glslang::TIntermAggregate* node);
void makeFunctions(const glslang::TIntermSequence&);
void makeGlobalInitializers(const glslang::TIntermSequence&);
void visitFunctions(const glslang::TIntermSequence&);
@@ -149,11 +150,14 @@
spv::Id createBinaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true);
spv::Id createBinaryMatrixOperation(spv::Op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id left, spv::Id right);
spv::Id createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
- spv::Id createUnaryMatrixOperation(spv::Op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
+ spv::Id createUnaryMatrixOperation(spv::Op op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand,glslang::TBasicType typeProxy);
spv::Id createConversion(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy);
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, glslang::TBasicType typeProxy);
- spv::Id createInvocationsOperation(glslang::TOperator, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy);
+ spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy);
+#ifdef AMD_EXTENSIONS
+ spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand);
+#endif
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::Decoration precision, spv::Id typeId);
spv::Id getSymbolId(const glslang::TIntermSymbol* node);
@@ -185,7 +189,7 @@
std::unordered_map<const char*, spv::Id> extBuiltinMap;
std::unordered_map<int, spv::Id> symbolValues;
- std::unordered_set<int> constReadOnlyParameters; // set of formal function parameters that have glslang qualifier constReadOnly, so we know they are not local function "const" that are write-once
+ std::unordered_set<int> rValueParameters; // set of formal function parameters passed as rValues, rather than a pointer
std::unordered_map<std::string, spv::Function*> functionMap;
std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
std::unordered_map<const glslang::TTypeList*, std::vector<int> > memberRemapper; // for mapping glslang block indices to spv indices (e.g., due to hidden members)
@@ -212,7 +216,8 @@
return spv::SourceLanguageUnknown;
}
case glslang::EShSourceHlsl:
- return spv::SourceLanguageHLSL;
+ //Use SourceLanguageUnknown instead of SourceLanguageHLSL for now, until Vulkan knows what HLSL is
+ return spv::SourceLanguageUnknown;
default:
return spv::SourceLanguageUnknown;
}
@@ -679,13 +684,17 @@
child.writeonly = true;
}
-bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier)
+bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier)
{
// This should list qualifiers that simultaneous satisfy:
- // - struct members can inherit from a struct declaration
- // - affect decorations on the struct members (note smooth does not, and expecting something like volatile to effect the whole object)
+ // - struct members might inherit from a struct declaration
+ // (note that non-block structs don't explicitly inherit,
+ // only implicitly, meaning no decoration involved)
+ // - affect decorations on the struct members
+ // (note smooth does not, and expecting something like volatile
+ // to effect the whole object)
// - are not part of the offset/st430/etc or row/column-major layout
- return qualifier.invariant || qualifier.hasLocation();
+ return qualifier.invariant || (qualifier.hasLocation() && type.getBasicType() == glslang::EbtBlock);
}
//
@@ -704,8 +713,8 @@
builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), glslangIntermediate->getVersion());
stdBuiltins = builder.import("GLSL.std.450");
builder.setMemoryModel(spv::AddressingModelLogical, spv::MemoryModelGLSL450);
- shaderEntry = builder.makeEntrypoint(glslangIntermediate->getEntryPoint().c_str());
- entryPoint = builder.addEntryPoint(executionModel, shaderEntry, glslangIntermediate->getEntryPoint().c_str());
+ shaderEntry = builder.makeEntryPoint(glslangIntermediate->getEntryPointName().c_str());
+ entryPoint = builder.addEntryPoint(executionModel, shaderEntry, glslangIntermediate->getEntryPointName().c_str());
// Add the source extensions
const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
@@ -889,13 +898,12 @@
// For now, we consider all user variables as being in memory, so they are pointers,
// except for
- // A) "const in" arguments to a function, which are an intermediate object.
+ // A) R-Value arguments to a function, which are an intermediate object.
// See comments in handleUserFunctionCall().
- // B) Specialization constants (normal constant don't even come in as a variable),
+ // B) Specialization constants (normal constants don't even come in as a variable),
// These are also pure R-values.
glslang::TQualifier qualifier = symbol->getQualifier();
- if ((qualifier.storage == glslang::EvqConstReadOnly && constReadOnlyParameters.find(symbol->getId()) != constReadOnlyParameters.end()) ||
- qualifier.isSpecConstant())
+ if (qualifier.isSpecConstant() || rValueParameters.find(symbol->getId()) != rValueParameters.end())
builder.setAccessChainRValue(id);
else
builder.setAccessChainLValue(id);
@@ -957,7 +965,7 @@
// store the result
builder.setAccessChain(lValue);
- accessChainStore(node->getType(), rValue);
+ multiTypeStore(node->getType(), rValue);
// assignments are expressions having an rValue after they are evaluated...
builder.clearAccessChain();
@@ -1271,7 +1279,7 @@
// In all cases, still let the traverser visit the children for us.
makeFunctions(node->getAsAggregate()->getSequence());
- // Also, we want all globals initializers to go into the entry of main(), before
+ // Also, we want all globals initializers to go into the beginning of the entry point, before
// anything else gets there, so visit out of order, doing them all now.
makeGlobalInitializers(node->getAsAggregate()->getSequence());
@@ -1305,7 +1313,7 @@
}
case glslang::EOpFunction:
if (visit == glslang::EvPreVisit) {
- if (isShaderEntrypoint(node)) {
+ if (isShaderEntryPoint(node)) {
inMain = true;
builder.setBuildPoint(shaderEntry->getLastBlock());
} else {
@@ -1954,7 +1962,7 @@
// Try to share structs for different layouts, but not yet for other
// kinds of qualification (primarily not yet including interpolant qualification).
- if (! HasNonLayoutQualifiers(qualifier))
+ if (! HasNonLayoutQualifiers(type, qualifier))
spvType = structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers];
if (spvType != spv::NoResult)
break;
@@ -2064,7 +2072,7 @@
// Make the SPIR-V type
spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str());
- if (! HasNonLayoutQualifiers(qualifier))
+ if (! HasNonLayoutQualifiers(type, qualifier))
structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType;
// Decorate it
@@ -2231,6 +2239,8 @@
// Wrap the builder's accessChainStore to:
// - do conversion of concrete to abstract type
+//
+// Implicitly uses the existing builder.accessChain as the storage target.
void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::Id rvalue)
{
// Need to convert to abstract types when necessary
@@ -2260,6 +2270,77 @@
builder.accessChainStore(rvalue);
}
+// For storing when types match at the glslang level, but not might match at the
+// SPIR-V level.
+//
+// This especially happens when a single glslang type expands to multiple
+// SPIR-V types, like a struct that is used in an member-undecorated way as well
+// as in a member-decorated way.
+//
+// NOTE: This function can handle any store request; if it's not special it
+// simplifies to a simple OpStore.
+//
+// Implicitly uses the existing builder.accessChain as the storage target.
+void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id rValue)
+{
+ // we only do the complex path here if it's an aggregate
+ if (! type.isStruct() && ! type.isArray()) {
+ accessChainStore(type, rValue);
+ return;
+ }
+
+ // and, it has to be a case of type aliasing
+ spv::Id rType = builder.getTypeId(rValue);
+ spv::Id lValue = builder.accessChainGetLValue();
+ spv::Id lType = builder.getContainedTypeId(builder.getTypeId(lValue));
+ if (lType == rType) {
+ accessChainStore(type, rValue);
+ return;
+ }
+
+ // Recursively (as needed) copy an aggregate type to a different aggregate type,
+ // where the two types were the same type in GLSL. This requires member
+ // by member copy, recursively.
+
+ // If an array, copy element by element.
+ if (type.isArray()) {
+ glslang::TType glslangElementType(type, 0);
+ spv::Id elementRType = builder.getContainedTypeId(rType);
+ for (int index = 0; index < type.getOuterArraySize(); ++index) {
+ // get the source member
+ spv::Id elementRValue = builder.createCompositeExtract(rValue, elementRType, index);
+
+ // set up the target storage
+ builder.clearAccessChain();
+ builder.setAccessChainLValue(lValue);
+ builder.accessChainPush(builder.makeIntConstant(index));
+
+ // store the member
+ multiTypeStore(glslangElementType, elementRValue);
+ }
+ } else {
+ assert(type.isStruct());
+
+ // loop over structure members
+ const glslang::TTypeList& members = *type.getStruct();
+ for (int m = 0; m < (int)members.size(); ++m) {
+ const glslang::TType& glslangMemberType = *members[m].type;
+
+ // get the source member
+ spv::Id memberRType = builder.getContainedTypeId(rType, m);
+ spv::Id memberRValue = builder.createCompositeExtract(rValue, memberRType, m);
+
+ // set up the target storage
+ builder.clearAccessChain();
+ builder.setAccessChainLValue(lValue);
+ builder.accessChainPush(builder.makeIntConstant(m));
+
+ // store the member
+ multiTypeStore(glslangMemberType, memberRValue);
+ }
+ }
+}
+
// Decide whether or not this type should be
// decorated with offsets and strides, and if so
// whether std140 or std430 rules should be applied.
@@ -2370,11 +2451,9 @@
}
}
-bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate* node)
+bool TGlslangToSpvTraverser::isShaderEntryPoint(const glslang::TIntermAggregate* node)
{
- // have to ignore mangling and just look at the base name
- size_t firstOpen = node->getName().find('(');
- return node->getName().compare(0, firstOpen, glslangIntermediate->getEntryPoint().c_str()) == 0;
+ return node->getName().compare(glslangIntermediate->getEntryPointMangledName().c_str()) == 0;
}
// Make all the functions, skeletally, without actually visiting their bodies.
@@ -2382,23 +2461,22 @@
{
for (int f = 0; f < (int)glslFunctions.size(); ++f) {
glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate();
- if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction || isShaderEntrypoint(glslFunction))
+ if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction || isShaderEntryPoint(glslFunction))
continue;
// We're on a user function. Set up the basic interface for the function now,
- // so that it's available to call.
- // Translating the body will happen later.
+ // so that it's available to call. Translating the body will happen later.
//
// Typically (except for a "const in" parameter), an address will be passed to the
// function. What it is an address of varies:
//
- // - "in" parameters not marked as "const" can be written to without modifying the argument,
- // so that write needs to be to a copy, hence the address of a copy works.
+ // - "in" parameters not marked as "const" can be written to without modifying the calling
+ // argument so that write needs to be to a copy, hence the address of a copy works.
//
// - "const in" parameters can just be the r-value, as no writes need occur.
//
- // - "out" and "inout" arguments can't be done as direct pointers, because GLSL has
- // copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
+ // - "out" and "inout" arguments can't be done as pointers to the calling argument, because
+ // GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy.
std::vector<spv::Id> paramTypes;
std::vector<spv::Decoration> paramPrecisions;
@@ -2412,7 +2490,7 @@
else if (paramType.getQualifier().storage != glslang::EvqConstReadOnly)
typeId = builder.makePointer(spv::StorageClassFunction, typeId);
else
- constReadOnlyParameters.insert(parameters[p]->getAsSymbolNode()->getId());
+ rValueParameters.insert(parameters[p]->getAsSymbolNode()->getId());
paramPrecisions.push_back(TranslatePrecisionDecoration(paramType));
paramTypes.push_back(typeId);
}
@@ -2443,7 +2521,7 @@
if (initializer && initializer->getOp() != glslang::EOpFunction && initializer->getOp() != glslang::EOpLinkerObjects) {
// We're on a top-level node that's not a function. Treat as an initializer, whose
- // code goes into the beginning of main.
+ // code goes into the beginning of the entry point.
initializer->traverse(this);
}
}
@@ -2897,7 +2975,9 @@
// need to copy the input into output space
builder.setAccessChain(lValues[lValueCount]);
spv::Id copy = accessChainLoad(*argTypes[a]);
- builder.createStore(copy, arg);
+ builder.clearAccessChain();
+ builder.setAccessChainLValue(arg);
+ multiTypeStore(paramType, copy);
}
++lValueCount;
} else {
@@ -2914,11 +2994,12 @@
// 4. Copy back out an "out" arguments.
lValueCount = 0;
for (int a = 0; a < (int)glslangArgs.size(); ++a) {
+ const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
if (qualifiers[a] != glslang::EvqConstReadOnly) {
if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) {
spv::Id copy = builder.createLoad(spvArgs[a]);
builder.setAccessChain(lValues[lValueCount]);
- accessChainStore(glslangArgs[a]->getAsTyped()->getType(), copy);
+ multiTypeStore(paramType, copy);
}
++lValueCount;
}
@@ -3082,11 +3163,9 @@
// Handle comparison instructions
- if (reduceComparison && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) {
- assert(op == glslang::EOpEqual || op == glslang::EOpNotEqual);
-
+ if (reduceComparison && (op == glslang::EOpEqual || op == glslang::EOpNotEqual)
+ && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left)))
return builder.createCompositeCompare(precision, left, right, op == glslang::EOpEqual);
- }
switch (op) {
case glslang::EOpLessThan:
@@ -3443,8 +3522,7 @@
case glslang::EOpUnpackInt2x32:
case glslang::EOpPackUint2x32:
case glslang::EOpUnpackUint2x32:
- logger->missingFunctionality("shader int64");
- libCall = spv::GLSLstd450Bad; // TODO: This is a placeholder.
+ unaryOp = spv::OpBitcast;
break;
case glslang::EOpDPdx:
@@ -3700,8 +3778,8 @@
case glslang::EOpConvInt64ToUint64:
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
- zero = (op == glslang::EOpConvUintToInt64 ||
- op == glslang::EOpConvIntToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
+ zero = (op == glslang::EOpConvUint64ToInt64 ||
+ op == glslang::EOpConvInt64ToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0);
zero = makeSmearedConstant(zero, vectorSize);
// Use OpIAdd, instead of OpBitcast to do the conversion when
// generating for OpSpecConstantOp instruction.
@@ -3941,7 +4019,10 @@
spvOp = spv::OpGroupIAdd;
}
- return builder.createOp(spvOp, typeId, operands);
+ if (builder.isVectorType(typeId))
+ return CreateInvocationsVectorOperation(spvOp, typeId, operand);
+ else
+ return builder.createOp(spvOp, typeId, operands);
}
case glslang::EOpMinInvocationsNonUniform:
case glslang::EOpMaxInvocationsNonUniform:
@@ -3975,7 +4056,10 @@
spvOp = spv::OpGroupIAddNonUniformAMD;
}
- return builder.createOp(spvOp, typeId, operands);
+ if (builder.isVectorType(typeId))
+ return CreateInvocationsVectorOperation(spvOp, typeId, operand);
+ else
+ return builder.createOp(spvOp, typeId, operands);
}
#endif
default:
@@ -3984,6 +4068,48 @@
}
}
+#ifdef AMD_EXTENSIONS
+// Create group invocation operations on a vector
+spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, spv::Id operand)
+{
+ assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin ||
+ op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax ||
+ op == spv::OpGroupFAdd || op == spv::OpGroupIAdd ||
+ op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD ||
+ op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD ||
+ op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD);
+
+ // Handle group invocation operations scalar by scalar.
+ // The result type is the same type as the original type.
+ // The algorithm is to:
+ // - break the vector into scalars
+ // - apply the operation to each scalar
+ // - make a vector out the scalar results
+
+ // get the types sorted out
+ int numComponents = builder.getNumComponents(operand);
+ spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operand));
+ std::vector<spv::Id> results;
+
+ // do each scalar op
+ for (int comp = 0; comp < numComponents; ++comp) {
+ std::vector<unsigned int> indexes;
+ indexes.push_back(comp);
+ spv::Id scalar = builder.createCompositeExtract(operand, scalarType, indexes);
+
+ std::vector<spv::Id> operands;
+ operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
+ operands.push_back(spv::GroupOperationReduce);
+ operands.push_back(scalar);
+
+ results.push_back(builder.createOp(op, scalarType, operands));
+ }
+
+ // put the pieces together
+ return builder.createCompositeConstruct(typeId, results);
+}
+#endif
+
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 || typeProxy == glslang::EbtUint64;
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 05f220a..5c551fb 100755
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -127,6 +127,33 @@
}
}
+ // Return the size of a type in 32-bit words. This currently only
+ // handles ints and floats, and is only invoked by queries which must be
+ // integer types. If ever needed, it can be generalized.
+ unsigned spirvbin_t::typeSizeInWords(spv::Id id) const
+ {
+ const unsigned typeStart = idPos(id);
+ const spv::Op opCode = asOpCode(typeStart);
+
+ switch (opCode) {
+ case spv::OpTypeInt: // fall through...
+ case spv::OpTypeFloat: return (spv[typeStart+2]+31)/32;
+ default:
+ return 0;
+ }
+ }
+
+ // Looks up the type of a given const or variable ID, and
+ // returns its size in 32-bit words.
+ unsigned spirvbin_t::idTypeSizeInWords(spv::Id id) const
+ {
+ const auto tid_it = idTypeSizeMap.find(id);
+ if (tid_it == idTypeSizeMap.end())
+ error("type size for ID not found");
+
+ return tid_it->second;
+ }
+
// Is this an opcode we should remove when using --strip?
bool spirvbin_t::isStripOp(spv::Op opCode) const
{
@@ -140,6 +167,7 @@
}
}
+ // Return true if this opcode is flow control
bool spirvbin_t::isFlowCtrl(spv::Op opCode) const
{
switch (opCode) {
@@ -155,6 +183,7 @@
}
}
+ // Return true if this opcode defines a type
bool spirvbin_t::isTypeOp(spv::Op opCode) const
{
switch (opCode) {
@@ -182,6 +211,7 @@
}
}
+ // Return true if this opcode defines a constant
bool spirvbin_t::isConstOp(spv::Op opCode) const
{
switch (opCode) {
@@ -324,7 +354,7 @@
fnPosDCE.clear();
fnCalls.clear();
typeConstPos.clear();
- typeConstPosR.clear();
+ idPosR.clear();
entryPoint = spv::NoResult;
largestNewId = 0;
@@ -340,6 +370,25 @@
if ((options & STRIP) && isStripOp(opCode))
stripInst(start);
+ unsigned word = start+1;
+ spv::Id typeId = spv::NoResult;
+
+ if (spv::InstructionDesc[opCode].hasType())
+ typeId = asId(word++);
+
+ // If there's a result ID, remember the size of its type
+ if (spv::InstructionDesc[opCode].hasResult()) {
+ const spv::Id resultId = asId(word++);
+ idPosR[resultId] = start;
+
+ if (typeId != spv::NoResult) {
+ const unsigned idTypeSize = typeSizeInWords(typeId);
+
+ if (idTypeSize != 0)
+ idTypeSizeMap[resultId] = idTypeSize;
+ }
+ }
+
if (opCode == spv::Op::OpName) {
const spv::Id target = asId(start+1);
const std::string name = literalString(start+2);
@@ -363,11 +412,9 @@
} else if (isConstOp(opCode)) {
assert(asId(start + 2) != spv::NoResult);
typeConstPos.insert(start);
- typeConstPosR[asId(start + 2)] = start;
} else if (isTypeOp(opCode)) {
assert(asId(start + 1) != spv::NoResult);
typeConstPos.insert(start);
- typeConstPosR[asId(start + 1)] = start;
}
return false;
@@ -436,12 +483,19 @@
return nextInst;
}
+ // Circular buffer so we can look back at previous unmapped values during the mapping pass.
+ static const unsigned idBufferSize = 4;
+ spv::Id idBuffer[idBufferSize];
+ unsigned idBufferPos = 0;
+
// Store IDs from instruction in our map
for (int op = 0; numOperands > 0; ++op, --numOperands) {
switch (spv::InstructionDesc[opCode].operands.getClass(op)) {
case spv::OperandId:
case spv::OperandScope:
case spv::OperandMemorySemantics:
+ idBuffer[idBufferPos] = asId(word);
+ idBufferPos = (idBufferPos + 1) % idBufferSize;
idFn(asId(word++));
break;
@@ -459,13 +513,25 @@
// word += numOperands;
return nextInst;
- case spv::OperandVariableLiteralId:
- while (numOperands > 0) {
- ++word; // immediate
- idFn(asId(word++)); // ID
- numOperands -= 2;
+ case spv::OperandVariableLiteralId: {
+ if (opCode == OpSwitch) {
+ // word-2 is the position of the selector ID. OpSwitch Literals match its type.
+ // In case the IDs are currently being remapped, we get the word[-2] ID from
+ // the circular idBuffer.
+ const unsigned literalSizePos = (idBufferPos+idBufferSize-2) % idBufferSize;
+ const unsigned literalSize = idTypeSizeInWords(idBuffer[literalSizePos]);
+ const unsigned numLiteralIdPairs = (nextInst-word) / (1+literalSize);
+
+ for (unsigned arg=0; arg<numLiteralIdPairs; ++arg) {
+ word += literalSize; // literal
+ idFn(asId(word++)); // label
+ }
+ } else {
+ assert(0); // currentely, only OpSwitch uses OperandVariableLiteralId
}
+
return nextInst;
+ }
case spv::OperandLiteralString: {
const int stringWordCount = literalStringWords(literalString(word));
@@ -966,23 +1032,27 @@
std::unordered_map<spv::Id, int> typeUseCount;
- // Count total type usage
- process(inst_fn_nop,
- [&](spv::Id& id) { if (isType[id]) ++typeUseCount[id]; }
- );
+ // This is not the most efficient algorithm, but this is an offline tool, and
+ // it's easy to write this way. Can be improved opportunistically if needed.
+ bool changed = true;
+ while (changed) {
+ changed = false;
+ strip();
+ typeUseCount.clear();
- // Remove types from deleted code
- for (const auto& fn : fnPosDCE)
+ // Count total type usage
process(inst_fn_nop,
- [&](spv::Id& id) { if (isType[id]) --typeUseCount[id]; },
- fn.second.first, fn.second.second);
+ [&](spv::Id& id) { if (isType[id]) ++typeUseCount[id]; }
+ );
- // Remove single reference types
- for (const auto typeStart : typeConstPos) {
- const spv::Id typeId = asTypeConstId(typeStart);
- if (typeUseCount[typeId] == 1) {
- --typeUseCount[typeId];
- stripInst(typeStart);
+ // Remove single reference types
+ for (const auto typeStart : typeConstPos) {
+ const spv::Id typeId = asTypeConstId(typeStart);
+ if (typeUseCount[typeId] == 1) {
+ changed = true;
+ --typeUseCount[typeId];
+ stripInst(typeStart);
+ }
}
}
}
@@ -1060,12 +1130,12 @@
}
#endif // NOTDEF
- // Return start position in SPV of given type. error if not found.
- unsigned spirvbin_t::typePos(spv::Id id) const
+ // Return start position in SPV of given Id. error if not found.
+ unsigned spirvbin_t::idPos(spv::Id id) const
{
- const auto tid_it = typeConstPosR.find(id);
- if (tid_it == typeConstPosR.end())
- error("type ID not found");
+ const auto tid_it = idPosR.find(id);
+ if (tid_it == idPosR.end())
+ error("ID not found");
return tid_it->second;
}
@@ -1083,11 +1153,11 @@
case spv::OpTypeInt: return 3 + (spv[typeStart+3]);
case spv::OpTypeFloat: return 5;
case spv::OpTypeVector:
- return 6 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
+ return 6 + hashType(idPos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
case spv::OpTypeMatrix:
- return 30 + hashType(typePos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
+ return 30 + hashType(idPos(spv[typeStart+2])) * (spv[typeStart+3] - 1);
case spv::OpTypeImage:
- return 120 + hashType(typePos(spv[typeStart+2])) +
+ return 120 + hashType(idPos(spv[typeStart+2])) +
spv[typeStart+3] + // dimensionality
spv[typeStart+4] * 8 * 16 + // depth
spv[typeStart+5] * 4 * 16 + // arrayed
@@ -1098,24 +1168,24 @@
case spv::OpTypeSampledImage:
return 502;
case spv::OpTypeArray:
- return 501 + hashType(typePos(spv[typeStart+2])) * spv[typeStart+3];
+ return 501 + hashType(idPos(spv[typeStart+2])) * spv[typeStart+3];
case spv::OpTypeRuntimeArray:
- return 5000 + hashType(typePos(spv[typeStart+2]));
+ return 5000 + hashType(idPos(spv[typeStart+2]));
case spv::OpTypeStruct:
{
std::uint32_t hash = 10000;
for (unsigned w=2; w < wordCount; ++w)
- hash += w * hashType(typePos(spv[typeStart+w]));
+ hash += w * hashType(idPos(spv[typeStart+w]));
return hash;
}
case spv::OpTypeOpaque: return 6000 + spv[typeStart+2];
- case spv::OpTypePointer: return 100000 + hashType(typePos(spv[typeStart+3]));
+ case spv::OpTypePointer: return 100000 + hashType(idPos(spv[typeStart+3]));
case spv::OpTypeFunction:
{
std::uint32_t hash = 200000;
for (unsigned w=2; w < wordCount; ++w)
- hash += w * hashType(typePos(spv[typeStart+w]));
+ hash += w * hashType(idPos(spv[typeStart+w]));
return hash;
}
@@ -1132,14 +1202,14 @@
case spv::OpConstantFalse: return 300008;
case spv::OpConstantComposite:
{
- std::uint32_t hash = 300011 + hashType(typePos(spv[typeStart+1]));
+ std::uint32_t hash = 300011 + hashType(idPos(spv[typeStart+1]));
for (unsigned w=3; w < wordCount; ++w)
- hash += w * hashType(typePos(spv[typeStart+w]));
+ hash += w * hashType(idPos(spv[typeStart+w]));
return hash;
}
case spv::OpConstant:
{
- std::uint32_t hash = 400011 + hashType(typePos(spv[typeStart+1]));
+ std::uint32_t hash = 400011 + hashType(idPos(spv[typeStart+1]));
for (unsigned w=3; w < wordCount; ++w)
hash += w * spv[typeStart+w];
return hash;
@@ -1212,19 +1282,19 @@
msg(3, 4, std::string("ID bound: ") + std::to_string(bound()));
strip(); // strip out data we decided to eliminate
-
if (options & OPT_LOADSTORE) optLoadStore();
if (options & OPT_FWD_LS) forwardLoadStores();
if (options & DCE_FUNCS) dceFuncs();
if (options & DCE_VARS) dceVars();
if (options & DCE_TYPES) dceTypes();
+ strip(); // strip out data we decided to eliminate
+
if (options & MAP_TYPES) mapTypeConst();
if (options & MAP_NAMES) mapNames();
if (options & MAP_FUNCS) mapFnBodies();
mapRemainder(); // map any unmapped IDs
applyMap(); // Now remap each shader to the new IDs we've come up with
- strip(); // strip out data we decided to eliminate
}
// remap from a memory image
diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h
index e5e8e1b..43ec1ae 100755
--- a/SPIRV/SPVRemapper.h
+++ b/SPIRV/SPVRemapper.h
@@ -38,7 +38,7 @@
#include <string>
#include <vector>
-#include <stdlib.h>
+#include <cstdlib>
namespace spv {
@@ -74,7 +74,7 @@
} // namespace SPV
#if !defined (use_cpp11)
-#include <stdio.h>
+#include <cstdio>
namespace spv {
class spirvbin_t : public spirvbin_base_t
@@ -82,7 +82,7 @@
public:
spirvbin_t(int /*verbose = 0*/) { }
- void remap(std::vector<unsigned int>& /*spv*/, unsigned int /*opts = 0*/)
+ void remap(std::vector<std::uint32_t>& /*spv*/, unsigned int /*opts = 0*/)
{
printf("Tool not compiled for C++11, which is required for SPIR-V remapping.\n");
exit(5);
@@ -159,16 +159,21 @@
typedef std::set<int> posmap_t;
typedef std::unordered_map<spv::Id, int> posmap_rev_t;
+ // Maps and ID to the size of its base type, if known.
+ typedef std::unordered_map<spv::Id, unsigned> typesize_map_t;
+
// handle error
void error(const std::string& txt) const { errorHandler(txt); }
- bool isConstOp(spv::Op opCode) const;
- bool isTypeOp(spv::Op opCode) const;
- bool isStripOp(spv::Op opCode) const;
- bool isFlowCtrl(spv::Op opCode) const;
- range_t literalRange(spv::Op opCode) const;
- range_t typeRange(spv::Op opCode) const;
- range_t constRange(spv::Op opCode) const;
+ bool isConstOp(spv::Op opCode) const;
+ bool isTypeOp(spv::Op opCode) const;
+ bool isStripOp(spv::Op opCode) const;
+ bool isFlowCtrl(spv::Op opCode) const;
+ range_t literalRange(spv::Op opCode) const;
+ range_t typeRange(spv::Op opCode) const;
+ range_t constRange(spv::Op opCode) const;
+ unsigned typeSizeInWords(spv::Id id) const;
+ unsigned idTypeSizeInWords(spv::Id id) const;
spv::Id& asId(unsigned word) { return spv[word]; }
const spv::Id& asId(unsigned word) const { return spv[word]; }
@@ -177,10 +182,10 @@
spv::Decoration asDecoration(unsigned word) const { return spv::Decoration(spv[word]); }
unsigned asWordCount(unsigned word) const { return opWordCount(spv[word]); }
spv::Id asTypeConstId(unsigned word) const { return asId(word + (isTypeOp(asOpCode(word)) ? 1 : 2)); }
- unsigned typePos(spv::Id id) const;
+ unsigned idPos(spv::Id id) const;
- static unsigned opWordCount(spirword_t data) { return data >> spv::WordCountShift; }
- static spv::Op opOpCode(spirword_t data) { return spv::Op(data & spv::OpCodeMask); }
+ static unsigned opWordCount(spirword_t data) { return data >> spv::WordCountShift; }
+ static spv::Op opOpCode(spirword_t data) { return spv::Op(data & spv::OpCodeMask); }
// Header access & set methods
spirword_t magic() const { return spv[0]; } // return magic number
@@ -263,8 +268,9 @@
// Which functions are called, anywhere in the module, with a call count
std::unordered_map<spv::Id, int> fnCalls;
- posmap_t typeConstPos; // word positions that define types & consts (ordered)
- posmap_rev_t typeConstPosR; // reverse map from IDs to positions
+ posmap_t typeConstPos; // word positions that define types & consts (ordered)
+ posmap_rev_t idPosR; // reverse map from IDs to positions
+ typesize_map_t idTypeSizeMap; // maps each ID to its type size, if known.
std::vector<spv::Id> idMapL; // ID {M}ap from {L}ocal to {G}lobal IDs
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 1411d16..a881d1b 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -38,8 +38,8 @@
// SpvBuilder.h.
//
-#include <assert.h>
-#include <stdlib.h>
+#include <cassert>
+#include <cstdlib>
#include <unordered_set>
#include <algorithm>
@@ -931,7 +931,7 @@
}
// Comments in header
-Function* Builder::makeEntrypoint(const char* entryPoint)
+Function* Builder::makeEntryPoint(const char* entryPoint)
{
assert(! mainFunction);
@@ -1328,15 +1328,20 @@
// Comments in header
Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, std::vector<unsigned>& channels)
{
- assert(getNumComponents(source) == (int)channels.size());
if (channels.size() == 1 && getNumComponents(source) == 1)
return createCompositeInsert(source, target, typeId, channels.front());
Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle);
- assert(isVector(source));
assert(isVector(target));
swizzle->addIdOperand(target);
- swizzle->addIdOperand(source);
+ if (accessChain.component != NoResult)
+ // For dynamic component selection, source does not involve in l-value swizzle
+ swizzle->addIdOperand(target);
+ else {
+ assert(getNumComponents(source) == (int)channels.size());
+ assert(isVector(source));
+ swizzle->addIdOperand(source);
+ }
// Set up an identity shuffle from the base value to the result value
unsigned int components[4];
@@ -1345,8 +1350,12 @@
components[i] = i;
// Punch in the l-value swizzle
- for (int i = 0; i < (int)channels.size(); ++i)
- components[channels[i]] = numTargetComponents + i;
+ for (int i = 0; i < (int)channels.size(); ++i) {
+ if (accessChain.component != NoResult)
+ components[i] = channels[i]; // Only shuffle the base value
+ else
+ components[channels[i]] = numTargetComponents + i;
+ }
// finish the instruction with these components selectors
for (int i = 0; i < numTargetComponents; ++i)
@@ -2118,9 +2127,6 @@
transferAccessChainSwizzle(true);
Id base = collapseAccessChain();
- if (accessChain.swizzle.size() && accessChain.component != NoResult)
- logger->missingFunctionality("simultaneous l-value swizzle and dynamic component selection");
-
// If swizzle still exists, it is out-of-order or not full, we must load the target vector,
// extract and insert elements to perform writeMask and/or swizzle.
Id source = NoResult;
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 00e85b8..38dc1fa 100755
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -210,7 +210,7 @@
// Make the entry-point function. The returned pointer is only valid
// for the lifetime of this builder.
- Function* makeEntrypoint(const char*);
+ Function* makeEntryPoint(const char*);
// Make a shader-style function, and create its entry block if entry is non-zero.
// Return the function, pass back the entry.
@@ -467,7 +467,7 @@
//
// the SPIR-V builder maintains a single active chain that
- // the following methods operated on
+ // the following methods operate on
//
// for external save and restore
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index b60b3ba..b1023b9 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -36,9 +36,9 @@
// Disassembler for SPIR-V.
//
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
+#include <cstdlib>
+#include <cstring>
+#include <cassert>
#include <iomanip>
#include <stack>
#include <sstream>
@@ -217,10 +217,12 @@
void SpirvStream::formatId(Id id, std::stringstream& idStream)
{
- if (id >= bound)
- Kill(out, "Bad <id>");
-
if (id != 0) {
+ // On instructions with no IDs, this is called with "0", which does not
+ // have to be within ID bounds on null shaders.
+ if (id >= bound)
+ Kill(out, "Bad <id>");
+
idStream << id;
if (idDescriptor[id].size() > 0)
idStream << "(" << idDescriptor[id] << ")";
@@ -334,7 +336,7 @@
idDescriptor[resultId] = (const char*)(&stream[word]);
}
else {
- if (idDescriptor[resultId].size() == 0) {
+ if (resultId != 0 && idDescriptor[resultId].size() == 0) {
switch (opCode) {
case OpTypeInt:
idDescriptor[resultId] = "int";
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index 9b58b59..a25f7c0 100755
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -33,7 +33,7 @@
//POSSIBILITY OF SUCH DAMAGE.
//
-// 1) Programatically fill in instruction/operand information.
+// 1) Programmatically fill in instruction/operand information.
// This can be used for disassembly, printing documentation, etc.
//
// 2) Print documentation from this parameterization.
@@ -41,8 +41,8 @@
#include "doc.h"
-#include <stdio.h>
-#include <string.h>
+#include <cstdio>
+#include <cstring>
#include <algorithm>
#ifdef AMD_EXTENSIONS
diff --git a/SPIRV/doc.h b/SPIRV/doc.h
index cf9e059..743896f 100644
--- a/SPIRV/doc.h
+++ b/SPIRV/doc.h
@@ -149,7 +149,7 @@
OperandMemorySemantics,
OperandMemoryAccess,
OperandScope,
- OperandGroupOperation,
+ OperandGroupOperation,
OperandKernelEnqueueFlags,
OperandKernelProfilingInfo,
OperandCapability,
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index d69351e..231ba27 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -24,6 +24,7 @@
OSDependent
HLSL
SPIRV
+ SPVRemapper
glslang-default-resource-limits)
if(WIN32)
diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp
index 8019863..8a5e6f3 100644
--- a/StandAlone/ResourceLimits.cpp
+++ b/StandAlone/ResourceLimits.cpp
@@ -241,8 +241,10 @@
void DecodeResourceLimits(TBuiltInResource* resources, char* config)
{
const char* delims = " \t\n\r";
+#pragma warning(suppress: 4996)
const char* token = strtok(config, delims);
while (token) {
+#pragma warning(suppress: 4996)
const char* valueStr = strtok(0, delims);
if (valueStr == 0 || ! (valueStr[0] == '-' || (valueStr[0] >= '0' && valueStr[0] <= '9'))) {
printf("Error: '%s' bad .conf file. Each name must be followed by one number.\n", valueStr ? valueStr : "");
@@ -438,6 +440,7 @@
else
printf("Warning: unrecognized limit (%s) in configuration file.\n", token);
+#pragma warning(suppress: 4996)
token = strtok(0, delims);
}
}
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index c014be2..606f247 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -46,9 +46,9 @@
#include "../SPIRV/GLSL.std.450.h"
#include "../SPIRV/doc.h"
#include "../SPIRV/disassemble.h"
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
+#include <cstring>
+#include <cstdlib>
+#include <cmath>
#include "../glslang/OSDependent/osinclude.h"
@@ -155,6 +155,7 @@
const char* ExecutableName = nullptr;
const char* binaryFileName = nullptr;
const char* entryPointName = nullptr;
+const char* shaderStageName = nullptr;
//
// Create the default name for saving a binary if -o is not provided.
@@ -236,6 +237,15 @@
Options |= EOptionVulkanRules;
Options |= EOptionLinkProgram;
break;
+ case 'S':
+ shaderStageName = argv[1];
+ if (argc > 0) {
+ argc--;
+ argv++;
+ }
+ else
+ Error("no <stage> specified for -S");
+ break;
case 'G':
Options |= EOptionSpv;
Options |= EOptionLinkProgram;
@@ -402,7 +412,26 @@
struct ShaderCompUnit {
EShLanguage stage;
std::string fileName;
- char** text; // memory owned/managed externally
+ char** text; // memory owned/managed externally
+ const char* fileNameList[1];
+
+ // Need to have a special constructors to adjust the fileNameList, since back end needs a list of ptrs
+ ShaderCompUnit(EShLanguage istage, std::string &ifileName, char** itext)
+ {
+ stage = istage;
+ fileName = ifileName;
+ text = itext;
+ fileNameList[0] = fileName.c_str();
+ }
+
+ ShaderCompUnit(const ShaderCompUnit &rhs)
+ {
+ stage = rhs.stage;
+ fileName = rhs.fileName;
+ text = rhs.text;
+ fileNameList[0] = fileName.c_str();
+ }
+
};
//
@@ -429,7 +458,7 @@
for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
const auto &compUnit = *it;
glslang::TShader* shader = new glslang::TShader(compUnit.stage);
- shader->setStrings(compUnit.text, 1);
+ shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, 1);
if (entryPointName) // HLSL todo: this needs to be tracked per compUnits
shader->setEntryPoint(entryPointName);
shaders.push_back(shader);
@@ -685,6 +714,9 @@
}
std::string suffix = name.substr(ext + 1, std::string::npos);
+ if (shaderStageName)
+ suffix = shaderStageName;
+
if (suffix == "vert")
return EShLangVertex;
else if (suffix == "tesc")
@@ -778,6 +810,8 @@
" -H print human readable form of SPIR-V; turns on -V\n"
" -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr.\n"
+ " -S <stage> uses explicit stage specified, rather then the file extension.\n"
+ " valid choices are vert, tesc, tese, geom, frag, or comp\n"
" -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n"
" -C cascading errors; risks crashes from accumulation of error recoveries\n"
diff --git a/Test/400.vert b/Test/400.vert
index 2c3dd04..315c7ea 100644
--- a/Test/400.vert
+++ b/Test/400.vert
@@ -4,6 +4,103 @@
in dvec3 d3; // ERROR, no doubles
in dmat4 dm4; // ERROR, no doubles
-void main()
+// function selection under type conversion
+void foo1(double a, uint b) {}
+void foo1(double a, int b) {}
+void foo1(double a, float b) {}
+void foo1(double a, double b){}
+
+void foo2(double a, float b) {}
+void foo2(double a, double b){}
+
+void foo3(double a, float b) {}
+void foo3(float a, double b) {}
+
+void ftd( int, float, double) {}
+void ftd( uint, float, double) {}
+void ftd(float, double, double) {}
+
+void main()
+{
+ double d;
+ uint u;
+ int i;
+ float f;
+
+ foo1(d, d);
+ foo1(d, u);
+ foo1(d, i);
+ foo1(d, f);
+
+ foo1(f, d);
+ foo1(f, u);
+ foo1(f, i);
+ foo1(f, f);
+
+ foo1(u, d);
+ foo1(u, u);
+ foo1(u, i);
+ foo1(u, f);
+
+ foo1(i, d);
+ foo1(i, u);
+ foo1(i, i);
+ foo1(i, f);
+
+ foo2(d, d);
+ foo2(d, u);
+ foo2(d, i);
+ foo2(d, f);
+
+ foo2(f, d);
+ foo2(f, u);
+ foo2(f, i);
+ foo2(f, f);
+
+ foo2(u, d);
+ foo2(u, u);
+ foo2(u, i);
+ foo2(u, f);
+
+ foo2(i, d);
+ foo2(i, u);
+ foo2(i, i);
+ foo2(i, f);
+
+ foo3(d, d); // ERROR, no match
+ foo3(d, u);
+ foo3(d, i);
+ foo3(d, f);
+
+ foo3(f, d);
+ foo3(f, u); // ERROR, ambiguous
+ foo3(f, i); // ERROR, ambiguous
+ foo3(f, f); // ERROR, ambiguous
+
+ foo3(u, d);
+ foo3(u, u); // ERROR, ambiguous
+ foo3(u, i); // ERROR, ambiguous
+ foo3(u, f); // ERROR, ambiguous
+
+ foo3(i, d);
+ foo3(i, u); // ERROR, ambiguous
+ foo3(i, i); // ERROR, ambiguous
+ foo3(i, f); // ERROR, ambiguous
+
+ ftd(i, f, f);
+ ftd(u, f, f);
+}
+
+void itf(int, float, int);
+void itf(int, double, int);
+
+void tf()
{
+ double d;
+ uint u;
+ int i;
+ float f;
+
+ itf(i, i, i);
+ itf(i, u, i);
}
diff --git a/Test/440.vert b/Test/440.vert
index bfcdfd2..2e61f79 100644
--- a/Test/440.vert
+++ b/Test/440.vert
@@ -73,6 +73,9 @@
layout(location = 56, component = 3) out float sf2o;
layout(location = 57, component = 2) out vec2 dv3o;
layout(location = 57, component = 3) out float sf4o; // ERROR, overlapping component
+layout(location=58) out flat dvec3 dv3o2; // uses part of location 59
+layout(location=59, component=2) out flat double dfo3; // okay, fits
+layout(location=59, component=0) out flat double dfo4; // ERROR, overlaps the dvec3 in starting in 58
out bblck1 {
vec4 bbv;
diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
index 0d10b0e..4fa7600 100644
--- a/Test/baseResults/120.frag.out
+++ b/Test/baseResults/120.frag.out
@@ -23,7 +23,7 @@
ERROR: 0:85: 'assign' : l-value required
ERROR: 0:91: 'int' : overloaded functions must have the same return type
ERROR: 0:91: 'main' : function already has a body
-ERROR: 0:91: 'int' : main function cannot return a value
+ERROR: 0:91: 'int' : entry point cannot return a value
ERROR: 0:92: 'main' : function cannot take any parameter(s)
ERROR: 0:94: 'a' : variables with qualifier 'const' must be initialized
ERROR: 0:97: 'out' : overloaded functions must have the same parameter storage qualifiers for argument 1
diff --git a/Test/baseResults/400.vert.out b/Test/baseResults/400.vert.out
index 946f21d..2b0d63d 100755
--- a/Test/baseResults/400.vert.out
+++ b/Test/baseResults/400.vert.out
@@ -3,13 +3,288 @@
ERROR: 0:3: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:4: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
ERROR: 0:5: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions
-ERROR: 3 compilation errors. No code generated.
+ERROR: 0:70: 'foo3' : no matching overloaded function found
+ERROR: 0:76: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:77: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:78: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:81: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:82: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:83: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:86: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:87: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 0:88: 'foo3' : ambiguous best function under implicit type conversion
+ERROR: 13 compilation errors. No code generated.
Shader version: 400
ERROR: node is still EOpNull!
-0:7 Function Definition: main( (global void)
-0:7 Function Parameters:
+0:8 Function Definition: foo1(d1;u1; (global void)
+0:8 Function Parameters:
+0:8 'a' (in double)
+0:8 'b' (in uint)
+0:9 Function Definition: foo1(d1;i1; (global void)
+0:9 Function Parameters:
+0:9 'a' (in double)
+0:9 'b' (in int)
+0:10 Function Definition: foo1(d1;f1; (global void)
+0:10 Function Parameters:
+0:10 'a' (in double)
+0:10 'b' (in float)
+0:11 Function Definition: foo1(d1;d1; (global void)
+0:11 Function Parameters:
+0:11 'a' (in double)
+0:11 'b' (in double)
+0:13 Function Definition: foo2(d1;f1; (global void)
+0:13 Function Parameters:
+0:13 'a' (in double)
+0:13 'b' (in float)
+0:14 Function Definition: foo2(d1;d1; (global void)
+0:14 Function Parameters:
+0:14 'a' (in double)
+0:14 'b' (in double)
+0:16 Function Definition: foo3(d1;f1; (global void)
+0:16 Function Parameters:
+0:16 'a' (in double)
+0:16 'b' (in float)
+0:17 Function Definition: foo3(f1;d1; (global void)
+0:17 Function Parameters:
+0:17 'a' (in float)
+0:17 'b' (in double)
+0:19 Function Definition: ftd(i1;f1;d1; (global void)
+0:19 Function Parameters:
+0:19 '' (in int)
+0:19 '' (in float)
+0:19 '' (in double)
+0:20 Function Definition: ftd(u1;f1;d1; (global void)
+0:20 Function Parameters:
+0:20 '' (in uint)
+0:20 '' (in float)
+0:20 '' (in double)
+0:21 Function Definition: ftd(f1;d1;d1; (global void)
+0:21 Function Parameters:
+0:21 '' (in float)
+0:21 '' (in double)
+0:21 '' (in double)
+0:23 Function Definition: main( (global void)
+0:23 Function Parameters:
+0:? Sequence
+0:30 Function Call: foo1(d1;d1; (global void)
+0:30 'd' (temp double)
+0:30 'd' (temp double)
+0:31 Function Call: foo1(d1;u1; (global void)
+0:31 'd' (temp double)
+0:31 'u' (temp uint)
+0:32 Function Call: foo1(d1;i1; (global void)
+0:32 'd' (temp double)
+0:32 'i' (temp int)
+0:33 Function Call: foo1(d1;f1; (global void)
+0:33 'd' (temp double)
+0:33 'f' (temp float)
+0:35 Function Call: foo1(d1;d1; (global void)
+0:35 Convert float to double (temp double)
+0:35 'f' (temp float)
+0:35 'd' (temp double)
+0:36 Function Call: foo1(d1;u1; (global void)
+0:36 Convert float to double (temp double)
+0:36 'f' (temp float)
+0:36 'u' (temp uint)
+0:37 Function Call: foo1(d1;i1; (global void)
+0:37 Convert float to double (temp double)
+0:37 'f' (temp float)
+0:37 'i' (temp int)
+0:38 Function Call: foo1(d1;f1; (global void)
+0:38 Convert float to double (temp double)
+0:38 'f' (temp float)
+0:38 'f' (temp float)
+0:40 Function Call: foo1(d1;d1; (global void)
+0:40 Convert uint to double (temp double)
+0:40 'u' (temp uint)
+0:40 'd' (temp double)
+0:41 Function Call: foo1(d1;u1; (global void)
+0:41 Convert uint to double (temp double)
+0:41 'u' (temp uint)
+0:41 'u' (temp uint)
+0:42 Function Call: foo1(d1;i1; (global void)
+0:42 Convert uint to double (temp double)
+0:42 'u' (temp uint)
+0:42 'i' (temp int)
+0:43 Function Call: foo1(d1;f1; (global void)
+0:43 Convert uint to double (temp double)
+0:43 'u' (temp uint)
+0:43 'f' (temp float)
+0:45 Function Call: foo1(d1;d1; (global void)
+0:45 Convert int to double (temp double)
+0:45 'i' (temp int)
+0:45 'd' (temp double)
+0:46 Function Call: foo1(d1;u1; (global void)
+0:46 Convert int to double (temp double)
+0:46 'i' (temp int)
+0:46 'u' (temp uint)
+0:47 Function Call: foo1(d1;i1; (global void)
+0:47 Convert int to double (temp double)
+0:47 'i' (temp int)
+0:47 'i' (temp int)
+0:48 Function Call: foo1(d1;f1; (global void)
+0:48 Convert int to double (temp double)
+0:48 'i' (temp int)
+0:48 'f' (temp float)
+0:50 Function Call: foo2(d1;d1; (global void)
+0:50 'd' (temp double)
+0:50 'd' (temp double)
+0:51 Function Call: foo2(d1;f1; (global void)
+0:51 'd' (temp double)
+0:51 Convert uint to float (temp float)
+0:51 'u' (temp uint)
+0:52 Function Call: foo2(d1;f1; (global void)
+0:52 'd' (temp double)
+0:52 Convert int to float (temp float)
+0:52 'i' (temp int)
+0:53 Function Call: foo2(d1;f1; (global void)
+0:53 'd' (temp double)
+0:53 'f' (temp float)
+0:55 Function Call: foo2(d1;d1; (global void)
+0:55 Convert float to double (temp double)
+0:55 'f' (temp float)
+0:55 'd' (temp double)
+0:56 Function Call: foo2(d1;f1; (global void)
+0:56 Convert float to double (temp double)
+0:56 'f' (temp float)
+0:56 Convert uint to float (temp float)
+0:56 'u' (temp uint)
+0:57 Function Call: foo2(d1;f1; (global void)
+0:57 Convert float to double (temp double)
+0:57 'f' (temp float)
+0:57 Convert int to float (temp float)
+0:57 'i' (temp int)
+0:58 Function Call: foo2(d1;f1; (global void)
+0:58 Convert float to double (temp double)
+0:58 'f' (temp float)
+0:58 'f' (temp float)
+0:60 Function Call: foo2(d1;d1; (global void)
+0:60 Convert uint to double (temp double)
+0:60 'u' (temp uint)
+0:60 'd' (temp double)
+0:61 Function Call: foo2(d1;f1; (global void)
+0:61 Convert uint to double (temp double)
+0:61 'u' (temp uint)
+0:61 Convert uint to float (temp float)
+0:61 'u' (temp uint)
+0:62 Function Call: foo2(d1;f1; (global void)
+0:62 Convert uint to double (temp double)
+0:62 'u' (temp uint)
+0:62 Convert int to float (temp float)
+0:62 'i' (temp int)
+0:63 Function Call: foo2(d1;f1; (global void)
+0:63 Convert uint to double (temp double)
+0:63 'u' (temp uint)
+0:63 'f' (temp float)
+0:65 Function Call: foo2(d1;d1; (global void)
+0:65 Convert int to double (temp double)
+0:65 'i' (temp int)
+0:65 'd' (temp double)
+0:66 Function Call: foo2(d1;f1; (global void)
+0:66 Convert int to double (temp double)
+0:66 'i' (temp int)
+0:66 Convert uint to float (temp float)
+0:66 'u' (temp uint)
+0:67 Function Call: foo2(d1;f1; (global void)
+0:67 Convert int to double (temp double)
+0:67 'i' (temp int)
+0:67 Convert int to float (temp float)
+0:67 'i' (temp int)
+0:68 Function Call: foo2(d1;f1; (global void)
+0:68 Convert int to double (temp double)
+0:68 'i' (temp int)
+0:68 'f' (temp float)
+0:70 Constant:
+0:70 0.000000
+0:71 Function Call: foo3(d1;f1; (global void)
+0:71 'd' (temp double)
+0:71 Convert uint to float (temp float)
+0:71 'u' (temp uint)
+0:72 Function Call: foo3(d1;f1; (global void)
+0:72 'd' (temp double)
+0:72 Convert int to float (temp float)
+0:72 'i' (temp int)
+0:73 Function Call: foo3(d1;f1; (global void)
+0:73 'd' (temp double)
+0:73 'f' (temp float)
+0:75 Function Call: foo3(f1;d1; (global void)
+0:75 'f' (temp float)
+0:75 'd' (temp double)
+0:76 Function Call: foo3(d1;f1; (global void)
+0:76 Convert float to double (temp double)
+0:76 'f' (temp float)
+0:76 Convert uint to float (temp float)
+0:76 'u' (temp uint)
+0:77 Function Call: foo3(d1;f1; (global void)
+0:77 Convert float to double (temp double)
+0:77 'f' (temp float)
+0:77 Convert int to float (temp float)
+0:77 'i' (temp int)
+0:78 Function Call: foo3(d1;f1; (global void)
+0:78 Convert float to double (temp double)
+0:78 'f' (temp float)
+0:78 'f' (temp float)
+0:80 Function Call: foo3(f1;d1; (global void)
+0:80 Convert uint to float (temp float)
+0:80 'u' (temp uint)
+0:80 'd' (temp double)
+0:81 Function Call: foo3(d1;f1; (global void)
+0:81 Convert uint to double (temp double)
+0:81 'u' (temp uint)
+0:81 Convert uint to float (temp float)
+0:81 'u' (temp uint)
+0:82 Function Call: foo3(d1;f1; (global void)
+0:82 Convert uint to double (temp double)
+0:82 'u' (temp uint)
+0:82 Convert int to float (temp float)
+0:82 'i' (temp int)
+0:83 Function Call: foo3(d1;f1; (global void)
+0:83 Convert uint to double (temp double)
+0:83 'u' (temp uint)
+0:83 'f' (temp float)
+0:85 Function Call: foo3(f1;d1; (global void)
+0:85 Convert int to float (temp float)
+0:85 'i' (temp int)
+0:85 'd' (temp double)
+0:86 Function Call: foo3(d1;f1; (global void)
+0:86 Convert int to double (temp double)
+0:86 'i' (temp int)
+0:86 Convert uint to float (temp float)
+0:86 'u' (temp uint)
+0:87 Function Call: foo3(d1;f1; (global void)
+0:87 Convert int to double (temp double)
+0:87 'i' (temp int)
+0:87 Convert int to float (temp float)
+0:87 'i' (temp int)
+0:88 Function Call: foo3(d1;f1; (global void)
+0:88 Convert int to double (temp double)
+0:88 'i' (temp int)
+0:88 'f' (temp float)
+0:90 Function Call: ftd(i1;f1;d1; (global void)
+0:90 'i' (temp int)
+0:90 'f' (temp float)
+0:90 Convert float to double (temp double)
+0:90 'f' (temp float)
+0:91 Function Call: ftd(u1;f1;d1; (global void)
+0:91 'u' (temp uint)
+0:91 'f' (temp float)
+0:91 Convert float to double (temp double)
+0:91 'f' (temp float)
+0:97 Function Definition: tf( (global void)
+0:97 Function Parameters:
+0:? Sequence
+0:104 Function Call: itf(i1;f1;i1; (global void)
+0:104 'i' (temp int)
+0:104 Convert int to float (temp float)
+0:104 'i' (temp int)
+0:104 'i' (temp int)
+0:105 Function Call: itf(i1;f1;i1; (global void)
+0:105 'i' (temp int)
+0:105 Convert uint to float (temp float)
+0:105 'u' (temp uint)
+0:105 'i' (temp int)
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
@@ -23,8 +298,273 @@
Shader version: 400
ERROR: node is still EOpNull!
-0:7 Function Definition: main( (global void)
-0:7 Function Parameters:
+0:8 Function Definition: foo1(d1;u1; (global void)
+0:8 Function Parameters:
+0:8 'a' (in double)
+0:8 'b' (in uint)
+0:9 Function Definition: foo1(d1;i1; (global void)
+0:9 Function Parameters:
+0:9 'a' (in double)
+0:9 'b' (in int)
+0:10 Function Definition: foo1(d1;f1; (global void)
+0:10 Function Parameters:
+0:10 'a' (in double)
+0:10 'b' (in float)
+0:11 Function Definition: foo1(d1;d1; (global void)
+0:11 Function Parameters:
+0:11 'a' (in double)
+0:11 'b' (in double)
+0:13 Function Definition: foo2(d1;f1; (global void)
+0:13 Function Parameters:
+0:13 'a' (in double)
+0:13 'b' (in float)
+0:14 Function Definition: foo2(d1;d1; (global void)
+0:14 Function Parameters:
+0:14 'a' (in double)
+0:14 'b' (in double)
+0:16 Function Definition: foo3(d1;f1; (global void)
+0:16 Function Parameters:
+0:16 'a' (in double)
+0:16 'b' (in float)
+0:17 Function Definition: foo3(f1;d1; (global void)
+0:17 Function Parameters:
+0:17 'a' (in float)
+0:17 'b' (in double)
+0:19 Function Definition: ftd(i1;f1;d1; (global void)
+0:19 Function Parameters:
+0:19 '' (in int)
+0:19 '' (in float)
+0:19 '' (in double)
+0:20 Function Definition: ftd(u1;f1;d1; (global void)
+0:20 Function Parameters:
+0:20 '' (in uint)
+0:20 '' (in float)
+0:20 '' (in double)
+0:21 Function Definition: ftd(f1;d1;d1; (global void)
+0:21 Function Parameters:
+0:21 '' (in float)
+0:21 '' (in double)
+0:21 '' (in double)
+0:23 Function Definition: main( (global void)
+0:23 Function Parameters:
+0:? Sequence
+0:30 Function Call: foo1(d1;d1; (global void)
+0:30 'd' (temp double)
+0:30 'd' (temp double)
+0:31 Function Call: foo1(d1;u1; (global void)
+0:31 'd' (temp double)
+0:31 'u' (temp uint)
+0:32 Function Call: foo1(d1;i1; (global void)
+0:32 'd' (temp double)
+0:32 'i' (temp int)
+0:33 Function Call: foo1(d1;f1; (global void)
+0:33 'd' (temp double)
+0:33 'f' (temp float)
+0:35 Function Call: foo1(d1;d1; (global void)
+0:35 Convert float to double (temp double)
+0:35 'f' (temp float)
+0:35 'd' (temp double)
+0:36 Function Call: foo1(d1;u1; (global void)
+0:36 Convert float to double (temp double)
+0:36 'f' (temp float)
+0:36 'u' (temp uint)
+0:37 Function Call: foo1(d1;i1; (global void)
+0:37 Convert float to double (temp double)
+0:37 'f' (temp float)
+0:37 'i' (temp int)
+0:38 Function Call: foo1(d1;f1; (global void)
+0:38 Convert float to double (temp double)
+0:38 'f' (temp float)
+0:38 'f' (temp float)
+0:40 Function Call: foo1(d1;d1; (global void)
+0:40 Convert uint to double (temp double)
+0:40 'u' (temp uint)
+0:40 'd' (temp double)
+0:41 Function Call: foo1(d1;u1; (global void)
+0:41 Convert uint to double (temp double)
+0:41 'u' (temp uint)
+0:41 'u' (temp uint)
+0:42 Function Call: foo1(d1;i1; (global void)
+0:42 Convert uint to double (temp double)
+0:42 'u' (temp uint)
+0:42 'i' (temp int)
+0:43 Function Call: foo1(d1;f1; (global void)
+0:43 Convert uint to double (temp double)
+0:43 'u' (temp uint)
+0:43 'f' (temp float)
+0:45 Function Call: foo1(d1;d1; (global void)
+0:45 Convert int to double (temp double)
+0:45 'i' (temp int)
+0:45 'd' (temp double)
+0:46 Function Call: foo1(d1;u1; (global void)
+0:46 Convert int to double (temp double)
+0:46 'i' (temp int)
+0:46 'u' (temp uint)
+0:47 Function Call: foo1(d1;i1; (global void)
+0:47 Convert int to double (temp double)
+0:47 'i' (temp int)
+0:47 'i' (temp int)
+0:48 Function Call: foo1(d1;f1; (global void)
+0:48 Convert int to double (temp double)
+0:48 'i' (temp int)
+0:48 'f' (temp float)
+0:50 Function Call: foo2(d1;d1; (global void)
+0:50 'd' (temp double)
+0:50 'd' (temp double)
+0:51 Function Call: foo2(d1;f1; (global void)
+0:51 'd' (temp double)
+0:51 Convert uint to float (temp float)
+0:51 'u' (temp uint)
+0:52 Function Call: foo2(d1;f1; (global void)
+0:52 'd' (temp double)
+0:52 Convert int to float (temp float)
+0:52 'i' (temp int)
+0:53 Function Call: foo2(d1;f1; (global void)
+0:53 'd' (temp double)
+0:53 'f' (temp float)
+0:55 Function Call: foo2(d1;d1; (global void)
+0:55 Convert float to double (temp double)
+0:55 'f' (temp float)
+0:55 'd' (temp double)
+0:56 Function Call: foo2(d1;f1; (global void)
+0:56 Convert float to double (temp double)
+0:56 'f' (temp float)
+0:56 Convert uint to float (temp float)
+0:56 'u' (temp uint)
+0:57 Function Call: foo2(d1;f1; (global void)
+0:57 Convert float to double (temp double)
+0:57 'f' (temp float)
+0:57 Convert int to float (temp float)
+0:57 'i' (temp int)
+0:58 Function Call: foo2(d1;f1; (global void)
+0:58 Convert float to double (temp double)
+0:58 'f' (temp float)
+0:58 'f' (temp float)
+0:60 Function Call: foo2(d1;d1; (global void)
+0:60 Convert uint to double (temp double)
+0:60 'u' (temp uint)
+0:60 'd' (temp double)
+0:61 Function Call: foo2(d1;f1; (global void)
+0:61 Convert uint to double (temp double)
+0:61 'u' (temp uint)
+0:61 Convert uint to float (temp float)
+0:61 'u' (temp uint)
+0:62 Function Call: foo2(d1;f1; (global void)
+0:62 Convert uint to double (temp double)
+0:62 'u' (temp uint)
+0:62 Convert int to float (temp float)
+0:62 'i' (temp int)
+0:63 Function Call: foo2(d1;f1; (global void)
+0:63 Convert uint to double (temp double)
+0:63 'u' (temp uint)
+0:63 'f' (temp float)
+0:65 Function Call: foo2(d1;d1; (global void)
+0:65 Convert int to double (temp double)
+0:65 'i' (temp int)
+0:65 'd' (temp double)
+0:66 Function Call: foo2(d1;f1; (global void)
+0:66 Convert int to double (temp double)
+0:66 'i' (temp int)
+0:66 Convert uint to float (temp float)
+0:66 'u' (temp uint)
+0:67 Function Call: foo2(d1;f1; (global void)
+0:67 Convert int to double (temp double)
+0:67 'i' (temp int)
+0:67 Convert int to float (temp float)
+0:67 'i' (temp int)
+0:68 Function Call: foo2(d1;f1; (global void)
+0:68 Convert int to double (temp double)
+0:68 'i' (temp int)
+0:68 'f' (temp float)
+0:70 Constant:
+0:70 0.000000
+0:71 Function Call: foo3(d1;f1; (global void)
+0:71 'd' (temp double)
+0:71 Convert uint to float (temp float)
+0:71 'u' (temp uint)
+0:72 Function Call: foo3(d1;f1; (global void)
+0:72 'd' (temp double)
+0:72 Convert int to float (temp float)
+0:72 'i' (temp int)
+0:73 Function Call: foo3(d1;f1; (global void)
+0:73 'd' (temp double)
+0:73 'f' (temp float)
+0:75 Function Call: foo3(f1;d1; (global void)
+0:75 'f' (temp float)
+0:75 'd' (temp double)
+0:76 Function Call: foo3(d1;f1; (global void)
+0:76 Convert float to double (temp double)
+0:76 'f' (temp float)
+0:76 Convert uint to float (temp float)
+0:76 'u' (temp uint)
+0:77 Function Call: foo3(d1;f1; (global void)
+0:77 Convert float to double (temp double)
+0:77 'f' (temp float)
+0:77 Convert int to float (temp float)
+0:77 'i' (temp int)
+0:78 Function Call: foo3(d1;f1; (global void)
+0:78 Convert float to double (temp double)
+0:78 'f' (temp float)
+0:78 'f' (temp float)
+0:80 Function Call: foo3(f1;d1; (global void)
+0:80 Convert uint to float (temp float)
+0:80 'u' (temp uint)
+0:80 'd' (temp double)
+0:81 Function Call: foo3(d1;f1; (global void)
+0:81 Convert uint to double (temp double)
+0:81 'u' (temp uint)
+0:81 Convert uint to float (temp float)
+0:81 'u' (temp uint)
+0:82 Function Call: foo3(d1;f1; (global void)
+0:82 Convert uint to double (temp double)
+0:82 'u' (temp uint)
+0:82 Convert int to float (temp float)
+0:82 'i' (temp int)
+0:83 Function Call: foo3(d1;f1; (global void)
+0:83 Convert uint to double (temp double)
+0:83 'u' (temp uint)
+0:83 'f' (temp float)
+0:85 Function Call: foo3(f1;d1; (global void)
+0:85 Convert int to float (temp float)
+0:85 'i' (temp int)
+0:85 'd' (temp double)
+0:86 Function Call: foo3(d1;f1; (global void)
+0:86 Convert int to double (temp double)
+0:86 'i' (temp int)
+0:86 Convert uint to float (temp float)
+0:86 'u' (temp uint)
+0:87 Function Call: foo3(d1;f1; (global void)
+0:87 Convert int to double (temp double)
+0:87 'i' (temp int)
+0:87 Convert int to float (temp float)
+0:87 'i' (temp int)
+0:88 Function Call: foo3(d1;f1; (global void)
+0:88 Convert int to double (temp double)
+0:88 'i' (temp int)
+0:88 'f' (temp float)
+0:90 Function Call: ftd(i1;f1;d1; (global void)
+0:90 'i' (temp int)
+0:90 'f' (temp float)
+0:90 Convert float to double (temp double)
+0:90 'f' (temp float)
+0:91 Function Call: ftd(u1;f1;d1; (global void)
+0:91 'u' (temp uint)
+0:91 'f' (temp float)
+0:91 Convert float to double (temp double)
+0:91 'f' (temp float)
+0:97 Function Definition: tf( (global void)
+0:97 Function Parameters:
+0:? Sequence
+0:104 Function Call: itf(i1;f1;i1; (global void)
+0:104 'i' (temp int)
+0:104 Convert int to float (temp float)
+0:104 'i' (temp int)
+0:104 'i' (temp int)
+0:105 Function Call: itf(i1;f1;i1; (global void)
+0:105 'i' (temp int)
+0:105 Convert uint to float (temp float)
+0:105 'u' (temp uint)
+0:105 'i' (temp int)
0:? Linker Objects
0:? 'd' (in double)
0:? 'd3' (in 3-component vector of double)
diff --git a/Test/baseResults/420.geom.out b/Test/baseResults/420.geom.out
index 416df13..625feea 100644
--- a/Test/baseResults/420.geom.out
+++ b/Test/baseResults/420.geom.out
@@ -132,7 +132,7 @@
Linked geometry stage:
-ERROR: Linking geometry stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point
ERROR: Linking geometry stage: At least one shader must specify an output layout primitive
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
diff --git a/Test/baseResults/420_size_gl_in.geom.out b/Test/baseResults/420_size_gl_in.geom.out
index 21d1944..28d09a6 100644
--- a/Test/baseResults/420_size_gl_in.geom.out
+++ b/Test/baseResults/420_size_gl_in.geom.out
@@ -39,7 +39,7 @@
Linked geometry stage:
-ERROR: Linking geometry stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point
ERROR: Linking geometry stage: At least one shader must specify an output layout primitive
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index 4b7825b..676fcd3 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -266,7 +266,7 @@
Linked vertex stage:
-ERROR: Linking vertex stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
ERROR: Linking vertex stage: xfb_stride is too small to hold all buffer entries:
ERROR: xfb_buffer 3, xfb_stride 64, minimum stride needed: 80
diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out
index cafd85a..064fe19 100644
--- a/Test/baseResults/440.frag.out
+++ b/Test/baseResults/440.frag.out
@@ -122,7 +122,7 @@
Linked fragment stage:
-ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
Shader version: 440
ERROR: node is still EOpNull!
diff --git a/Test/baseResults/440.vert.out b/Test/baseResults/440.vert.out
index d4cbb0b..022ddec 100644
--- a/Test/baseResults/440.vert.out
+++ b/Test/baseResults/440.vert.out
@@ -23,74 +23,75 @@
ERROR: 0:67: 'component' : type overflows the available 4 components
ERROR: 0:71: 'location' : overlapping use of location 55
ERROR: 0:75: 'location' : overlapping use of location 57
-ERROR: 0:92: 'xfb layout qualifier' : can only be used on an output
-ERROR: 0:98: 'xfb_offset' : cannot declare a default, use a full declaration
-ERROR: 0:108: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
-ERROR: 0:113: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
-ERROR: 0:113: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3
-ERROR: 0:114: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2
-ERROR: 0:116: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2
-ERROR: 0:119: 'xfb_stride' : all stride settings must match for xfb buffer 15
-ERROR: 0:123: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1
-ERROR: 0:125: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:126: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:130: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:78: 'location' : overlapping use of location 59
+ERROR: 0:95: 'xfb layout qualifier' : can only be used on an output
+ERROR: 0:101: 'xfb_offset' : cannot declare a default, use a full declaration
+ERROR: 0:111: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
+ERROR: 0:116: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
+ERROR: 0:116: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3
+ERROR: 0:117: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2
+ERROR: 0:119: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2
+ERROR: 0:122: 'xfb_stride' : all stride settings must match for xfb buffer 15
+ERROR: 0:126: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1
ERROR: 0:128: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:149: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0
-ERROR: 0:154: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:155: 'xfb_offset' : must be a multiple of size of first component
-ERROR: 0:156: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
+ERROR: 0:129: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:133: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:131: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:152: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0
+ERROR: 0:157: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
ERROR: 0:158: 'xfb_offset' : must be a multiple of size of first component
ERROR: 0:159: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
-ERROR: 0:163: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:161: 'xfb_offset' : must be a multiple of size of first component
+ERROR: 0:162: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
ERROR: 0:166: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:166: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64
-ERROR: 0:168: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:176: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:176: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:176: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:184: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input)
-ERROR: 0:185: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input)
-ERROR: 0:186: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input)
-ERROR: 0:187: 'glBaseInstanceARB' : undeclared identifier
-ERROR: 53 compilation errors. No code generated.
+ERROR: 0:169: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:169: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64
+ERROR: 0:171: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:179: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:179: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:179: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:187: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input)
+ERROR: 0:188: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input)
+ERROR: 0:189: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input)
+ERROR: 0:190: 'glBaseInstanceARB' : undeclared identifier
+ERROR: 54 compilation errors. No code generated.
Shader version: 440
Requested GL_ARB_shader_draw_parameters
in xfb mode
ERROR: node is still EOpNull!
-0:174 Function Definition: drawParamsBad( (global int)
-0:174 Function Parameters:
-0:176 Sequence
-0:176 Branch: Return with expression
-0:176 add (temp int)
-0:176 add (temp int)
-0:176 'gl_BaseVertexARB' (in int BaseVertex)
-0:176 'gl_BaseInstanceARB' (in int BaseInstance)
-0:176 'gl_DrawIDARB' (in int DrawId)
-0:181 Function Definition: drawParams( (global int)
-0:181 Function Parameters:
-0:183 Sequence
-0:183 Branch: Return with expression
-0:183 add (temp int)
-0:183 add (temp int)
-0:183 'gl_BaseVertexARB' (in int BaseVertex)
-0:183 'gl_BaseInstanceARB' (in int BaseInstance)
-0:183 'gl_DrawIDARB' (in int DrawId)
-0:184 move second child to first child (temp int)
-0:184 'gl_BaseVertexARB' (in int BaseVertex)
-0:184 Constant:
-0:184 3 (const int)
-0:185 move second child to first child (temp int)
-0:185 'gl_BaseInstanceARB' (in int BaseInstance)
-0:185 Constant:
-0:185 3 (const int)
-0:186 move second child to first child (temp int)
-0:186 'gl_DrawIDARB' (in int DrawId)
-0:186 Constant:
-0:186 3 (const int)
-0:187 'glBaseInstanceARB' (temp float)
+0:177 Function Definition: drawParamsBad( (global int)
+0:177 Function Parameters:
+0:179 Sequence
+0:179 Branch: Return with expression
+0:179 add (temp int)
+0:179 add (temp int)
+0:179 'gl_BaseVertexARB' (in int BaseVertex)
+0:179 'gl_BaseInstanceARB' (in int BaseInstance)
+0:179 'gl_DrawIDARB' (in int DrawId)
+0:184 Function Definition: drawParams( (global int)
+0:184 Function Parameters:
+0:186 Sequence
+0:186 Branch: Return with expression
+0:186 add (temp int)
+0:186 add (temp int)
+0:186 'gl_BaseVertexARB' (in int BaseVertex)
+0:186 'gl_BaseInstanceARB' (in int BaseInstance)
+0:186 'gl_DrawIDARB' (in int DrawId)
+0:187 move second child to first child (temp int)
+0:187 'gl_BaseVertexARB' (in int BaseVertex)
+0:187 Constant:
+0:187 3 (const int)
+0:188 move second child to first child (temp int)
+0:188 'gl_BaseInstanceARB' (in int BaseInstance)
+0:188 Constant:
+0:188 3 (const int)
+0:189 move second child to first child (temp int)
+0:189 'gl_DrawIDARB' (in int DrawId)
+0:189 Constant:
+0:189 3 (const int)
+0:190 'glBaseInstanceARB' (temp float)
0:? Linker Objects
0:? 'a' (layout(location=2 component=2 ) in 2-component vector of float)
0:? 'b' (layout(location=2 component=1 ) in float)
@@ -133,6 +134,9 @@
0:? 'sf2o' (layout(location=56 component=3 ) smooth out float)
0:? 'dv3o' (layout(location=57 component=2 ) smooth out 2-component vector of float)
0:? 'sf4o' (layout(location=57 component=3 ) smooth out float)
+0:? 'dv3o2' (layout(location=58 ) flat out 3-component vector of double)
+0:? 'dfo3' (layout(location=59 component=2 ) flat out double)
+0:? 'dfo4' (layout(location=59 component=0 ) flat out double)
0:? 'bbinst1' (out block{out 4-component vector of float bbv})
0:? 'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})
0:? 'bbinst3' (out block{layout(xfb_buffer=3 xfb_offset=16 ) out 4-component vector of float bbv})
@@ -156,7 +160,7 @@
Linked vertex stage:
-ERROR: Linking vertex stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
ERROR: Linking vertex stage: xfb_stride is too small to hold all buffer entries:
ERROR: xfb_buffer 0, xfb_stride 92, minimum stride needed: 96
ERROR: Linking vertex stage: xfb_stride must be multiple of 8 for buffer holding a double:
@@ -170,37 +174,37 @@
Requested GL_ARB_shader_draw_parameters
in xfb mode
ERROR: node is still EOpNull!
-0:174 Function Definition: drawParamsBad( (global int)
-0:174 Function Parameters:
-0:176 Sequence
-0:176 Branch: Return with expression
-0:176 add (temp int)
-0:176 add (temp int)
-0:176 'gl_BaseVertexARB' (in int BaseVertex)
-0:176 'gl_BaseInstanceARB' (in int BaseInstance)
-0:176 'gl_DrawIDARB' (in int DrawId)
-0:181 Function Definition: drawParams( (global int)
-0:181 Function Parameters:
-0:183 Sequence
-0:183 Branch: Return with expression
-0:183 add (temp int)
-0:183 add (temp int)
-0:183 'gl_BaseVertexARB' (in int BaseVertex)
-0:183 'gl_BaseInstanceARB' (in int BaseInstance)
-0:183 'gl_DrawIDARB' (in int DrawId)
-0:184 move second child to first child (temp int)
-0:184 'gl_BaseVertexARB' (in int BaseVertex)
-0:184 Constant:
-0:184 3 (const int)
-0:185 move second child to first child (temp int)
-0:185 'gl_BaseInstanceARB' (in int BaseInstance)
-0:185 Constant:
-0:185 3 (const int)
-0:186 move second child to first child (temp int)
-0:186 'gl_DrawIDARB' (in int DrawId)
-0:186 Constant:
-0:186 3 (const int)
-0:187 'glBaseInstanceARB' (temp float)
+0:177 Function Definition: drawParamsBad( (global int)
+0:177 Function Parameters:
+0:179 Sequence
+0:179 Branch: Return with expression
+0:179 add (temp int)
+0:179 add (temp int)
+0:179 'gl_BaseVertexARB' (in int BaseVertex)
+0:179 'gl_BaseInstanceARB' (in int BaseInstance)
+0:179 'gl_DrawIDARB' (in int DrawId)
+0:184 Function Definition: drawParams( (global int)
+0:184 Function Parameters:
+0:186 Sequence
+0:186 Branch: Return with expression
+0:186 add (temp int)
+0:186 add (temp int)
+0:186 'gl_BaseVertexARB' (in int BaseVertex)
+0:186 'gl_BaseInstanceARB' (in int BaseInstance)
+0:186 'gl_DrawIDARB' (in int DrawId)
+0:187 move second child to first child (temp int)
+0:187 'gl_BaseVertexARB' (in int BaseVertex)
+0:187 Constant:
+0:187 3 (const int)
+0:188 move second child to first child (temp int)
+0:188 'gl_BaseInstanceARB' (in int BaseInstance)
+0:188 Constant:
+0:188 3 (const int)
+0:189 move second child to first child (temp int)
+0:189 'gl_DrawIDARB' (in int DrawId)
+0:189 Constant:
+0:189 3 (const int)
+0:190 'glBaseInstanceARB' (temp float)
0:? Linker Objects
0:? 'a' (layout(location=2 component=2 ) in 2-component vector of float)
0:? 'b' (layout(location=2 component=1 ) in float)
@@ -243,6 +247,9 @@
0:? 'sf2o' (layout(location=56 component=3 ) smooth out float)
0:? 'dv3o' (layout(location=57 component=2 ) smooth out 2-component vector of float)
0:? 'sf4o' (layout(location=57 component=3 ) smooth out float)
+0:? 'dv3o2' (layout(location=58 ) flat out 3-component vector of double)
+0:? 'dfo3' (layout(location=59 component=2 ) flat out double)
+0:? 'dfo4' (layout(location=59 component=0 ) flat out double)
0:? 'bbinst1' (out block{out 4-component vector of float bbv})
0:? 'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})
0:? 'bbinst3' (out block{layout(xfb_buffer=3 xfb_offset=16 ) out 4-component vector of float bbv})
diff --git a/Test/baseResults/450.comp.out b/Test/baseResults/450.comp.out
index d5d1eca..203c4b2 100644
--- a/Test/baseResults/450.comp.out
+++ b/Test/baseResults/450.comp.out
@@ -9,7 +9,7 @@
Linked compute stage:
-ERROR: Linking compute stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point
Shader version: 450
local_size = (1, 1, 1)
diff --git a/Test/baseResults/badChars.frag.out b/Test/baseResults/badChars.frag.out
index 37af287..a29b22f 100644
--- a/Test/baseResults/badChars.frag.out
+++ b/Test/baseResults/badChars.frag.out
@@ -17,7 +17,7 @@
Linked fragment stage:
-ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
Shader version: 100
ERROR: node is still EOpNull!
diff --git a/Test/baseResults/badMacroArgs.frag.out b/Test/baseResults/badMacroArgs.frag.out
index 6a46a0f..95937ce 100644
--- a/Test/baseResults/badMacroArgs.frag.out
+++ b/Test/baseResults/badMacroArgs.frag.out
@@ -1,7 +1,7 @@
badMacroArgs.frag
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.
ERROR: 0:4: 'macro expansion' : Too few args in Macro m
-ERROR: 0:4: '' : syntax error
+ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
diff --git a/Test/baseResults/cppBad.vert.out b/Test/baseResults/cppBad.vert.out
index 6938af6..1fb18ec 100755
--- a/Test/baseResults/cppBad.vert.out
+++ b/Test/baseResults/cppBad.vert.out
@@ -14,7 +14,7 @@
Linked vertex stage:
-ERROR: Linking vertex stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
Shader version: 100
ERROR: node is still EOpNull!
diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out
index 4f95f5a..df90557 100644
--- a/Test/baseResults/cppNest.vert.out
+++ b/Test/baseResults/cppNest.vert.out
@@ -4,7 +4,7 @@
ERROR: 0:161: '#elif' : #elif after #else
ERROR: 0:169: '#else' : #else after #else
ERROR: 0:177: 'macro expansion' : End of input in macro FUNC
-ERROR: 0:178: '' : syntax error
+ERROR: 0:178: '' : compilation terminated
ERROR: 6 compilation errors. No code generated.
diff --git a/Test/baseResults/dce.frag.out b/Test/baseResults/dce.frag.out
index a19fe4e..2846abd 100644
--- a/Test/baseResults/dce.frag.out
+++ b/Test/baseResults/dce.frag.out
@@ -138,7 +138,7 @@
Linked fragment stage:
-ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
Shader version: 400
0:? Sequence
diff --git a/Test/baseResults/errors.frag.out b/Test/baseResults/errors.frag.out
index f1e06d2..23f6631 100644
--- a/Test/baseResults/errors.frag.out
+++ b/Test/baseResults/errors.frag.out
@@ -1,6 +1,6 @@
errors.frag
ERROR: 0:1: 'main' : function cannot take any parameter(s)
-ERROR: 0:1: 'int' : main function cannot return a value
+ERROR: 0:1: 'int' : entry point cannot return a value
ERROR: 2 compilation errors. No code generated.
diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index abc7ebb..359f62f 100755
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -2,50 +2,56 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
0:8 Function Parameters:
-0:8 'i' (in int)
-0:8 'input' (in 3-element array of 4-component vector of float)
+0:8 'i' (layout(location=0 ) in int)
+0:8 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
0:? Sequence
-0:10 Branch: Return with expression
-0:10 add (temp 4-component vector of float)
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
-0:10 direct index (temp 4-component vector of float)
-0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 add (temp 4-component vector of float)
+0:10 direct index (temp 4-component vector of float)
+0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 indirect index (temp 4-component vector of float)
+0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 'i' (layout(location=0 ) in int)
+0:10 direct index (layout(location=1 ) temp 4-component vector of float)
+0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
0:10 Constant:
-0:10 1 (const int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 'a' (global 4-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 direct index (temp 4-component vector of float)
-0:10 'input' (in 3-element array of 4-component vector of float)
-0:10 Constant:
-0:10 2 (const int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 'input' (in 3-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 direct index (temp 4-component vector of float)
+0:10 2 (const int)
+0:10 indirect index (layout(location=1 ) temp 4-component vector of float)
+0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
+0:10 'i' (layout(location=0 ) in int)
+0:10 direct index (temp 4-component vector of float)
+0:10 'b' (temp 10-element array of 4-component vector of float)
+0:10 Constant:
+0:10 5 (const int)
+0:10 indirect index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
-0:10 Constant:
-0:10 5 (const int)
+0:10 'i' (layout(location=0 ) in int)
0:10 indirect index (temp 4-component vector of float)
-0:10 'b' (temp 10-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
-0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
-0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
-0:10 'i' (in int)
-0:10 Constant:
-0:10 0 (const int)
-0:10 'i' (in int)
+0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
+0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
+0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10 'i' (layout(location=0 ) in int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 'i' (layout(location=0 ) in int)
+0:10 Branch: Return
0:? Linker Objects
0:? 'a' (global 4-element array of 4-component vector of float)
0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'i' (layout(location=0 ) in int)
+0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
Linked fragment stage:
@@ -54,129 +60,141 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:11 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(i1;vf4[3]; (global 4-component vector of float)
0:8 Function Parameters:
-0:8 'i' (in int)
-0:8 'input' (in 3-element array of 4-component vector of float)
+0:8 'i' (layout(location=0 ) in int)
+0:8 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
0:? Sequence
-0:10 Branch: Return with expression
-0:10 add (temp 4-component vector of float)
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
-0:10 direct index (temp 4-component vector of float)
-0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 add (temp 4-component vector of float)
+0:10 direct index (temp 4-component vector of float)
+0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 Constant:
+0:10 1 (const int)
+0:10 indirect index (temp 4-component vector of float)
+0:10 'a' (global 4-element array of 4-component vector of float)
+0:10 'i' (layout(location=0 ) in int)
+0:10 direct index (layout(location=1 ) temp 4-component vector of float)
+0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
0:10 Constant:
-0:10 1 (const int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 'a' (global 4-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 direct index (temp 4-component vector of float)
-0:10 'input' (in 3-element array of 4-component vector of float)
-0:10 Constant:
-0:10 2 (const int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 'input' (in 3-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 direct index (temp 4-component vector of float)
+0:10 2 (const int)
+0:10 indirect index (layout(location=1 ) temp 4-component vector of float)
+0:10 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
+0:10 'i' (layout(location=0 ) in int)
+0:10 direct index (temp 4-component vector of float)
+0:10 'b' (temp 10-element array of 4-component vector of float)
+0:10 Constant:
+0:10 5 (const int)
+0:10 indirect index (temp 4-component vector of float)
0:10 'b' (temp 10-element array of 4-component vector of float)
-0:10 Constant:
-0:10 5 (const int)
+0:10 'i' (layout(location=0 ) in int)
0:10 indirect index (temp 4-component vector of float)
-0:10 'b' (temp 10-element array of 4-component vector of float)
-0:10 'i' (in int)
-0:10 indirect index (temp 4-component vector of float)
-0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
-0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
-0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
-0:10 'i' (in int)
-0:10 Constant:
-0:10 0 (const int)
-0:10 'i' (in int)
+0:10 m: direct index for structure (temp 7-element array of 4-component vector of float)
+0:10 indirect index (temp structure{temp 7-element array of 4-component vector of float m})
+0:10 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:10 'i' (layout(location=0 ) in int)
+0:10 Constant:
+0:10 0 (const int)
+0:10 'i' (layout(location=0 ) in int)
+0:10 Branch: Return
0:? Linker Objects
0:? 'a' (global 4-element array of 4-component vector of float)
0:? 's' (global 11-element array of structure{temp 7-element array of 4-component vector of float m})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'i' (layout(location=0 ) in int)
+0:? 'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 64
+// Id's are bound by 66
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 19 27
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 21 29
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 12 "a"
- Name 19 "i"
- Name 27 "input"
- Name 40 "b"
- Name 52 ""
- MemberName 52 0 "m"
- Name 56 "s"
+ Name 9 "@entryPointOutput"
+ Name 14 "a"
+ Name 21 "i"
+ Name 29 "input"
+ Name 42 "b"
+ Name 54 ""
+ MemberName 54 0 "m"
+ Name 58 "s"
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 21(i) Location 0
+ Decorate 29(input) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypeInt 32 0
- 9: 8(int) Constant 4
- 10: TypeArray 7(fvec4) 9
- 11: TypePointer Private 10
- 12(a): 11(ptr) Variable Private
- 13: TypeInt 32 1
- 14: 13(int) Constant 1
- 15: TypePointer Private 7(fvec4)
- 18: TypePointer Input 13(int)
- 19(i): 18(ptr) Variable Input
- 24: 8(int) Constant 3
- 25: TypeArray 7(fvec4) 24
- 26: TypePointer Input 25
- 27(input): 26(ptr) Variable Input
- 28: 13(int) Constant 2
- 29: TypePointer Input 7(fvec4)
- 37: 8(int) Constant 10
- 38: TypeArray 7(fvec4) 37
- 39: TypePointer Function 38
- 41: 13(int) Constant 5
- 42: TypePointer Function 7(fvec4)
- 50: 8(int) Constant 7
- 51: TypeArray 7(fvec4) 50
- 52: TypeStruct 51
- 53: 8(int) Constant 11
- 54: TypeArray 52(struct) 53
- 55: TypePointer Private 54
- 56(s): 55(ptr) Variable Private
- 58: 13(int) Constant 0
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 4
+ 12: TypeArray 7(fvec4) 11
+ 13: TypePointer Private 12
+ 14(a): 13(ptr) Variable Private
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 1
+ 17: TypePointer Private 7(fvec4)
+ 20: TypePointer Input 15(int)
+ 21(i): 20(ptr) Variable Input
+ 26: 10(int) Constant 3
+ 27: TypeArray 7(fvec4) 26
+ 28: TypePointer Input 27
+ 29(input): 28(ptr) Variable Input
+ 30: 15(int) Constant 2
+ 31: TypePointer Input 7(fvec4)
+ 39: 10(int) Constant 10
+ 40: TypeArray 7(fvec4) 39
+ 41: TypePointer Function 40
+ 43: 15(int) Constant 5
+ 44: TypePointer Function 7(fvec4)
+ 52: 10(int) Constant 7
+ 53: TypeArray 7(fvec4) 52
+ 54: TypeStruct 53
+ 55: 10(int) Constant 11
+ 56: TypeArray 54(struct) 55
+ 57: TypePointer Private 56
+ 58(s): 57(ptr) Variable Private
+ 60: 15(int) Constant 0
4(PixelShaderFunction): 2 Function None 3
5: Label
- 40(b): 39(ptr) Variable Function
- 16: 15(ptr) AccessChain 12(a) 14
- 17: 7(fvec4) Load 16
- 20: 13(int) Load 19(i)
- 21: 15(ptr) AccessChain 12(a) 20
- 22: 7(fvec4) Load 21
- 23: 7(fvec4) FAdd 17 22
- 30: 29(ptr) AccessChain 27(input) 28
- 31: 7(fvec4) Load 30
- 32: 7(fvec4) FAdd 23 31
- 33: 13(int) Load 19(i)
- 34: 29(ptr) AccessChain 27(input) 33
- 35: 7(fvec4) Load 34
- 36: 7(fvec4) FAdd 32 35
- 43: 42(ptr) AccessChain 40(b) 41
- 44: 7(fvec4) Load 43
- 45: 7(fvec4) FAdd 36 44
- 46: 13(int) Load 19(i)
- 47: 42(ptr) AccessChain 40(b) 46
- 48: 7(fvec4) Load 47
- 49: 7(fvec4) FAdd 45 48
- 57: 13(int) Load 19(i)
- 59: 13(int) Load 19(i)
- 60: 15(ptr) AccessChain 56(s) 57 58 59
- 61: 7(fvec4) Load 60
- 62: 7(fvec4) FAdd 49 61
- ReturnValue 62
+ 42(b): 41(ptr) Variable Function
+ 18: 17(ptr) AccessChain 14(a) 16
+ 19: 7(fvec4) Load 18
+ 22: 15(int) Load 21(i)
+ 23: 17(ptr) AccessChain 14(a) 22
+ 24: 7(fvec4) Load 23
+ 25: 7(fvec4) FAdd 19 24
+ 32: 31(ptr) AccessChain 29(input) 30
+ 33: 7(fvec4) Load 32
+ 34: 7(fvec4) FAdd 25 33
+ 35: 15(int) Load 21(i)
+ 36: 31(ptr) AccessChain 29(input) 35
+ 37: 7(fvec4) Load 36
+ 38: 7(fvec4) FAdd 34 37
+ 45: 44(ptr) AccessChain 42(b) 43
+ 46: 7(fvec4) Load 45
+ 47: 7(fvec4) FAdd 38 46
+ 48: 15(int) Load 21(i)
+ 49: 44(ptr) AccessChain 42(b) 48
+ 50: 7(fvec4) Load 49
+ 51: 7(fvec4) FAdd 47 50
+ 59: 15(int) Load 21(i)
+ 61: 15(int) Load 21(i)
+ 62: 17(ptr) AccessChain 58(s) 59 60 61
+ 63: 7(fvec4) Load 62
+ 64: 7(fvec4) FAdd 51 63
+ Store 9(@entryPointOutput) 64
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out
index 89eea72..d54d467 100755
--- a/Test/baseResults/hlsl.assoc.frag.out
+++ b/Test/baseResults/hlsl.assoc.frag.out
@@ -2,34 +2,43 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:8 Function Parameters:
-0:8 'a1' (in 4-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 'a3' (in 4-component vector of float)
-0:8 'a4' (in 4-component vector of float)
-0:8 'a5' (in 4-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 'a4' (layout(location=3 ) in 4-component vector of float)
+0:8 'a5' (layout(location=4 ) in 4-component vector of float)
0:? Sequence
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a1' (in 4-component vector of float)
+0:9 'a1' (layout(location=0 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a2' (in 4-component vector of float)
+0:9 'a2' (layout(location=1 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a3' (in 4-component vector of float)
+0:9 'a3' (layout(location=2 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a4' (in 4-component vector of float)
-0:9 'a5' (in 4-component vector of float)
-0:10 Branch: Return with expression
-0:10 add (temp 4-component vector of float)
+0:9 'a4' (layout(location=3 ) in 4-component vector of float)
+0:9 'a5' (layout(location=4 ) in 4-component vector of float)
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
-0:10 'a1' (in 4-component vector of float)
-0:10 'a2' (in 4-component vector of float)
-0:10 'a3' (in 4-component vector of float)
-0:10 'a4' (in 4-component vector of float)
-0:10 'a5' (in 4-component vector of float)
+0:10 add (temp 4-component vector of float)
+0:10 'a1' (layout(location=0 ) in 4-component vector of float)
+0:10 'a2' (layout(location=1 ) in 4-component vector of float)
+0:10 'a3' (layout(location=2 ) in 4-component vector of float)
+0:10 'a4' (layout(location=3 ) in 4-component vector of float)
+0:10 'a5' (layout(location=4 ) in 4-component vector of float)
+0:10 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'a1' (layout(location=0 ) in 4-component vector of float)
+0:? 'a2' (layout(location=1 ) in 4-component vector of float)
+0:? 'a3' (layout(location=2 ) in 4-component vector of float)
+0:? 'a4' (layout(location=3 ) in 4-component vector of float)
+0:? 'a5' (layout(location=4 ) in 4-component vector of float)
Linked fragment stage:
@@ -38,51 +47,66 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:8 Function Parameters:
-0:8 'a1' (in 4-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 'a3' (in 4-component vector of float)
-0:8 'a4' (in 4-component vector of float)
-0:8 'a5' (in 4-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 'a4' (layout(location=3 ) in 4-component vector of float)
+0:8 'a5' (layout(location=4 ) in 4-component vector of float)
0:? Sequence
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a1' (in 4-component vector of float)
+0:9 'a1' (layout(location=0 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a2' (in 4-component vector of float)
+0:9 'a2' (layout(location=1 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a3' (in 4-component vector of float)
+0:9 'a3' (layout(location=2 ) in 4-component vector of float)
0:9 move second child to first child (temp 4-component vector of float)
-0:9 'a4' (in 4-component vector of float)
-0:9 'a5' (in 4-component vector of float)
-0:10 Branch: Return with expression
-0:10 add (temp 4-component vector of float)
+0:9 'a4' (layout(location=3 ) in 4-component vector of float)
+0:9 'a5' (layout(location=4 ) in 4-component vector of float)
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
0:10 add (temp 4-component vector of float)
-0:10 'a1' (in 4-component vector of float)
-0:10 'a2' (in 4-component vector of float)
-0:10 'a3' (in 4-component vector of float)
-0:10 'a4' (in 4-component vector of float)
-0:10 'a5' (in 4-component vector of float)
+0:10 add (temp 4-component vector of float)
+0:10 'a1' (layout(location=0 ) in 4-component vector of float)
+0:10 'a2' (layout(location=1 ) in 4-component vector of float)
+0:10 'a3' (layout(location=2 ) in 4-component vector of float)
+0:10 'a4' (layout(location=3 ) in 4-component vector of float)
+0:10 'a5' (layout(location=4 ) in 4-component vector of float)
+0:10 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'a1' (layout(location=0 ) in 4-component vector of float)
+0:? 'a2' (layout(location=1 ) in 4-component vector of float)
+0:? 'a3' (layout(location=2 ) in 4-component vector of float)
+0:? 'a4' (layout(location=3 ) in 4-component vector of float)
+0:? 'a5' (layout(location=4 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 25
+// Id's are bound by 27
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9 10 11 12 13
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 10 11 12 13 16
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "a1"
Name 10 "a2"
Name 11 "a3"
Name 12 "a4"
Name 13 "a5"
+ Name 16 "@entryPointOutput"
+ Decorate 9(a1) Location 0
+ Decorate 10(a2) Location 1
+ Decorate 11(a3) Location 2
+ Decorate 12(a4) Location 3
+ Decorate 13(a5) Location 4
+ Decorate 16(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -93,6 +117,8 @@
11(a3): 8(ptr) Variable Input
12(a4): 8(ptr) Variable Input
13(a5): 8(ptr) Variable Input
+ 15: TypePointer Output 7(fvec4)
+16(@entryPointOutput): 15(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
14: 7(fvec4) Load 13(a5)
@@ -100,14 +126,15 @@
Store 11(a3) 14
Store 10(a2) 14
Store 9(a1) 14
- 15: 7(fvec4) Load 9(a1)
- 16: 7(fvec4) Load 10(a2)
- 17: 7(fvec4) FAdd 15 16
- 18: 7(fvec4) Load 11(a3)
+ 17: 7(fvec4) Load 9(a1)
+ 18: 7(fvec4) Load 10(a2)
19: 7(fvec4) FAdd 17 18
- 20: 7(fvec4) Load 12(a4)
+ 20: 7(fvec4) Load 11(a3)
21: 7(fvec4) FAdd 19 20
- 22: 7(fvec4) Load 13(a5)
+ 22: 7(fvec4) Load 12(a4)
23: 7(fvec4) FAdd 21 22
- ReturnValue 23
+ 24: 7(fvec4) Load 13(a5)
+ 25: 7(fvec4) FAdd 23 24
+ Store 16(@entryPointOutput) 25
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out
index 77e34fe..38421a8 100755
--- a/Test/baseResults/hlsl.attribute.frag.out
+++ b/Test/baseResults/hlsl.attribute.frag.out
@@ -2,9 +2,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global void)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
@@ -12,6 +12,7 @@
0:11 0 (const int)
0:11 true case is null
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -20,9 +21,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global void)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
@@ -30,22 +31,28 @@
0:11 0 (const int)
0:11 true case is null
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 10
+// Id's are bound by 14
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction"
+ EntryPoint Fragment 4 "PixelShaderFunction" 13
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
+ Name 13 "input"
+ Decorate 13(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: 6(int) Constant 0
+ 10: TypeFloat 32
+ 11: TypeVector 10(float) 4
+ 12: TypePointer Input 11(fvec4)
+ 13(input): 12(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
SelectionMerge 9 None
diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index a51be51..78a8e73 100755
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -2,37 +2,42 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:26 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:26 Function Parameters:
-0:26 'input' (in 4-component vector of float)
+0:26 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:27 Branch: Return with expression
-0:27 add (temp 4-component vector of float)
+0:27 Sequence
+0:27 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:27 add (temp 4-component vector of float)
0:27 add (temp 4-component vector of float)
0:27 add (temp 4-component vector of float)
-0:27 'input' (in 4-component vector of float)
-0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
+0:27 add (temp 4-component vector of float)
+0:27 'input' (layout(location=0 ) in 4-component vector of float)
+0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
+0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
+0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:27 Constant:
0:27 0 (const uint)
-0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
-0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
+0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
+0:27 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:27 Constant:
0:27 0 (const uint)
-0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27 'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
+0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:27 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
0:27 Constant:
0:27 0 (const uint)
-0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:27 'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
-0:27 Constant:
-0:27 0 (const uint)
+0:27 Branch: Return
0:? Linker Objects
0:? 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:? 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:? 'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:? 'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:? 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
+0:? 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -41,125 +46,137 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:26 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:26 Function Parameters:
-0:26 'input' (in 4-component vector of float)
+0:26 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:27 Branch: Return with expression
-0:27 add (temp 4-component vector of float)
+0:27 Sequence
+0:27 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:27 add (temp 4-component vector of float)
0:27 add (temp 4-component vector of float)
0:27 add (temp 4-component vector of float)
-0:27 'input' (in 4-component vector of float)
-0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
+0:27 add (temp 4-component vector of float)
+0:27 'input' (layout(location=0 ) in 4-component vector of float)
+0:27 v1: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
+0:27 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
+0:27 Constant:
+0:27 0 (const uint)
+0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
+0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
0:27 Constant:
0:27 0 (const uint)
-0:27 v2: direct index for structure (layout(column_major std430 ) buffer 4-component vector of float)
-0:27 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
+0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
+0:27 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
0:27 Constant:
0:27 0 (const uint)
-0:27 v3: direct index for structure (layout(column_major std140 ) uniform 4-component vector of float)
-0:27 'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
+0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:27 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
0:27 Constant:
0:27 0 (const uint)
-0:27 v4: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
-0:27 'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
-0:27 Constant:
-0:27 0 (const uint)
+0:27 Branch: Return
0:? Linker Objects
0:? 'anon@0' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v1})
0:? 'anon@1' (layout(column_major std430 ) buffer block{layout(column_major std430 ) buffer 4-component vector of float v2})
-0:? 'anon@2' (layout(column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
-0:? 'anon@3' (layout(column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:? 'anon@2' (layout(set=10 binding=2 column_major std140 ) uniform block{layout(column_major std140 ) uniform 4-component vector of float v3, layout(column_major std140 offset=20 ) uniform int i3})
+0:? 'anon@3' (layout(binding=8 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v4, layout(column_major std430 offset=48 ) buffer int i4, layout(column_major std430 offset=60 ) buffer float f1, layout(column_major std430 offset=64 ) buffer float f3, layout(column_major std430 offset=68 ) buffer float f4, layout(column_major std430 offset=72 ) buffer float f5, layout(column_major std430 ) buffer float f6, layout(column_major std430 ) buffer float f7})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 39
+// Id's are bound by 41
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 9 "input"
- Name 11 ""
- MemberName 11 0 "v1"
+ Name 9 "@entryPointOutput"
+ Name 11 "input"
Name 13 ""
- Name 20 ""
- MemberName 20 0 "v2"
+ MemberName 13 0 "v1"
+ Name 15 ""
Name 22 ""
- Name 26 ""
- MemberName 26 0 "v3"
- MemberName 26 1 "i3"
+ MemberName 22 0 "v2"
+ Name 24 ""
Name 28 ""
- Name 32 ""
- MemberName 32 0 "v4"
- MemberName 32 1 "i4"
- MemberName 32 2 "f1"
- MemberName 32 3 "f3"
- MemberName 32 4 "f4"
- MemberName 32 5 "f5"
- MemberName 32 6 "f6"
- MemberName 32 7 "f7"
+ MemberName 28 0 "v3"
+ MemberName 28 1 "i3"
+ Name 30 ""
Name 34 ""
- MemberDecorate 11 0 Offset 0
- Decorate 11 Block
- Decorate 13 DescriptorSet 0
- MemberDecorate 20 0 Offset 0
- Decorate 20 BufferBlock
- Decorate 22 DescriptorSet 0
- MemberDecorate 26 0 Offset 0
- MemberDecorate 26 1 Offset 20
- Decorate 26 Block
- Decorate 28 DescriptorSet 0
- MemberDecorate 32 0 Offset 16
- MemberDecorate 32 1 Offset 48
- MemberDecorate 32 2 Offset 60
- MemberDecorate 32 3 Offset 64
- MemberDecorate 32 4 Offset 68
- MemberDecorate 32 5 Offset 72
- MemberDecorate 32 6 Offset 76
- MemberDecorate 32 7 Offset 80
- Decorate 32 BufferBlock
- Decorate 34 DescriptorSet 0
+ MemberName 34 0 "v4"
+ MemberName 34 1 "i4"
+ MemberName 34 2 "f1"
+ MemberName 34 3 "f3"
+ MemberName 34 4 "f4"
+ MemberName 34 5 "f5"
+ MemberName 34 6 "f6"
+ MemberName 34 7 "f7"
+ Name 36 ""
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 11(input) Location 0
+ MemberDecorate 13 0 Offset 0
+ Decorate 13 Block
+ Decorate 15 DescriptorSet 0
+ MemberDecorate 22 0 Offset 0
+ Decorate 22 BufferBlock
+ Decorate 24 DescriptorSet 0
+ MemberDecorate 28 0 Offset 0
+ MemberDecorate 28 1 Offset 20
+ Decorate 28 Block
+ Decorate 30 DescriptorSet 10
+ Decorate 30 Binding 2
+ MemberDecorate 34 0 Offset 16
+ MemberDecorate 34 1 Offset 48
+ MemberDecorate 34 2 Offset 60
+ MemberDecorate 34 3 Offset 64
+ MemberDecorate 34 4 Offset 68
+ MemberDecorate 34 5 Offset 72
+ MemberDecorate 34 6 Offset 76
+ MemberDecorate 34 7 Offset 80
+ Decorate 34 BufferBlock
+ Decorate 36 DescriptorSet 0
+ Decorate 36 Binding 8
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Input 7(fvec4)
- 9(input): 8(ptr) Variable Input
- 11: TypeStruct 7(fvec4)
- 12: TypePointer Uniform 11(struct)
- 13: 12(ptr) Variable Uniform
- 14: TypeInt 32 1
- 15: 14(int) Constant 0
- 16: TypePointer Uniform 7(fvec4)
- 20: TypeStruct 7(fvec4)
- 21: TypePointer Uniform 20(struct)
- 22: 21(ptr) Variable Uniform
- 26: TypeStruct 7(fvec4) 14(int)
- 27: TypePointer Uniform 26(struct)
- 28: 27(ptr) Variable Uniform
- 32: TypeStruct 7(fvec4) 14(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float)
- 33: TypePointer Uniform 32(struct)
- 34: 33(ptr) Variable Uniform
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(input): 10(ptr) Variable Input
+ 13: TypeStruct 7(fvec4)
+ 14: TypePointer Uniform 13(struct)
+ 15: 14(ptr) Variable Uniform
+ 16: TypeInt 32 1
+ 17: 16(int) Constant 0
+ 18: TypePointer Uniform 7(fvec4)
+ 22: TypeStruct 7(fvec4)
+ 23: TypePointer Uniform 22(struct)
+ 24: 23(ptr) Variable Uniform
+ 28: TypeStruct 7(fvec4) 16(int)
+ 29: TypePointer Uniform 28(struct)
+ 30: 29(ptr) Variable Uniform
+ 34: TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float)
+ 35: TypePointer Uniform 34(struct)
+ 36: 35(ptr) Variable Uniform
4(PixelShaderFunction): 2 Function None 3
5: Label
- 10: 7(fvec4) Load 9(input)
- 17: 16(ptr) AccessChain 13 15
- 18: 7(fvec4) Load 17
- 19: 7(fvec4) FAdd 10 18
- 23: 16(ptr) AccessChain 22 15
- 24: 7(fvec4) Load 23
- 25: 7(fvec4) FAdd 19 24
- 29: 16(ptr) AccessChain 28 15
- 30: 7(fvec4) Load 29
- 31: 7(fvec4) FAdd 25 30
- 35: 16(ptr) AccessChain 34 15
- 36: 7(fvec4) Load 35
- 37: 7(fvec4) FAdd 31 36
- ReturnValue 37
+ 12: 7(fvec4) Load 11(input)
+ 19: 18(ptr) AccessChain 15 17
+ 20: 7(fvec4) Load 19
+ 21: 7(fvec4) FAdd 12 20
+ 25: 18(ptr) AccessChain 24 17
+ 26: 7(fvec4) Load 25
+ 27: 7(fvec4) FAdd 21 26
+ 31: 18(ptr) AccessChain 30 17
+ 32: 7(fvec4) Load 31
+ 33: 7(fvec4) FAdd 27 32
+ 37: 18(ptr) AccessChain 36 17
+ 38: 7(fvec4) Load 37
+ 39: 7(fvec4) FAdd 33 38
+ Store 9(@entryPointOutput) 39
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 43232fb..68eee1a 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -124,7 +124,7 @@
0:38 0 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -133,14 +133,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -153,6 +166,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -161,7 +176,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -283,7 +298,7 @@
0:38 0 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -292,14 +307,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -312,10 +340,12 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 143
+// Id's are bound by 150
Capability Shader
Capability Sampled1D
@@ -323,9 +353,8 @@
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 141 145
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "txval10"
Name 11 "g_tTex1df4a"
@@ -350,7 +379,9 @@
MemberName 131(PS_OUTPUT) 0 "Color"
MemberName 131(PS_OUTPUT) 1 "Depth"
Name 133 "psout"
- Name 142 "g_tTex1df4"
+ Name 141 "Color"
+ Name 145 "Depth"
+ Name 149 "g_tTex1df4"
Decorate 11(g_tTex1df4a) DescriptorSet 0
Decorate 11(g_tTex1df4a) Binding 1
Decorate 15(g_sSamp) DescriptorSet 0
@@ -363,9 +394,10 @@
Decorate 93(g_tTexcdf4a) DescriptorSet 0
Decorate 106(g_tTexcdi4a) DescriptorSet 0
Decorate 118(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 131(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 142(g_tTex1df4) DescriptorSet 0
- Decorate 142(g_tTex1df4) Binding 0
+ Decorate 141(Color) Location 0
+ Decorate 145(Depth) BuiltIn FragDepth
+ Decorate 149(g_tTex1df4) DescriptorSet 0
+ Decorate 149(g_tTex1df4) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -436,7 +468,11 @@
135: 130(fvec4) ConstantComposite 134 134 134 134
136: TypePointer Function 130(fvec4)
138: 23(int) Constant 1
- 142(g_tTex1df4): 10(ptr) Variable UniformConstant
+ 140: TypePointer Output 130(fvec4)
+ 141(Color): 140(ptr) Variable Output
+ 144: TypePointer Output 6(float)
+ 145(Depth): 144(ptr) Variable Output
+ 149(g_tTex1df4): 10(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(txval10): 7(ptr) Variable Function
@@ -516,6 +552,11 @@
Store 137 135
139: 7(ptr) AccessChain 133(psout) 138
Store 139 134
- 140:131(PS_OUTPUT) Load 133(psout)
- ReturnValue 140
+ 142: 136(ptr) AccessChain 133(psout) 24
+ 143: 130(fvec4) Load 142
+ Store 141(Color) 143
+ 146: 7(ptr) AccessChain 133(psout) 138
+ 147: 6(float) Load 146
+ Store 145(Depth) 147
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index e2dc1db..9370e14 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -14,7 +14,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -136,7 +136,7 @@
0:38 0 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -145,14 +145,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -165,6 +178,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -173,7 +188,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -295,7 +310,7 @@
0:38 0 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -304,14 +319,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -324,5 +352,7 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out
index 24b18cd..3bef95f 100755
--- a/Test/baseResults/hlsl.cast.frag.out
+++ b/Test/baseResults/hlsl.cast.frag.out
@@ -2,24 +2,29 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 add (temp 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:3 add (temp 4-component vector of float)
-0:3 Construct vec4 (temp 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
-0:3 Convert int to float (temp 4-component vector of float)
-0:3 Convert float to int (temp 4-component vector of int)
-0:3 'input' (in 4-component vector of float)
-0:3 Constant:
-0:3 1.198000
-0:3 1.198000
-0:3 1.198000
-0:3 1.198000
+0:3 add (temp 4-component vector of float)
+0:3 Construct vec4 (temp 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Convert int to float (temp 4-component vector of float)
+0:3 Convert float to int (temp 4-component vector of int)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Constant:
+0:3 1.198000
+0:3 1.198000
+0:3 1.198000
+0:3 1.198000
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -28,59 +33,69 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 add (temp 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:3 add (temp 4-component vector of float)
-0:3 Construct vec4 (temp 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
-0:3 Convert int to float (temp 4-component vector of float)
-0:3 Convert float to int (temp 4-component vector of int)
-0:3 'input' (in 4-component vector of float)
-0:3 Constant:
-0:3 1.198000
-0:3 1.198000
-0:3 1.198000
-0:3 1.198000
+0:3 add (temp 4-component vector of float)
+0:3 Construct vec4 (temp 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Convert int to float (temp 4-component vector of float)
+0:3 Convert float to int (temp 4-component vector of int)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Constant:
+0:3 1.198000
+0:3 1.198000
+0:3 1.198000
+0:3 1.198000
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 26
+// Id's are bound by 28
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 9 "input"
+ Name 9 "@entryPointOutput"
+ Name 11 "input"
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 11(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Input 7(fvec4)
- 9(input): 8(ptr) Variable Input
- 17: TypeInt 32 1
- 18: TypeVector 17(int) 4
- 22: 6(float) Constant 1067014160
- 23: 7(fvec4) ConstantComposite 22 22 22 22
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(input): 10(ptr) Variable Input
+ 19: TypeInt 32 1
+ 20: TypeVector 19(int) 4
+ 24: 6(float) Constant 1067014160
+ 25: 7(fvec4) ConstantComposite 24 24 24 24
4(PixelShaderFunction): 2 Function None 3
5: Label
- 10: 7(fvec4) Load 9(input)
- 11: 6(float) CompositeExtract 10 0
- 12: 6(float) CompositeExtract 10 1
- 13: 6(float) CompositeExtract 10 2
- 14: 6(float) CompositeExtract 10 3
- 15: 7(fvec4) CompositeConstruct 11 12 13 14
- 16: 7(fvec4) Load 9(input)
- 19: 18(ivec4) ConvertFToS 16
- 20: 7(fvec4) ConvertSToF 19
- 21: 7(fvec4) FAdd 15 20
- 24: 7(fvec4) FAdd 21 23
- ReturnValue 24
+ 12: 7(fvec4) Load 11(input)
+ 13: 6(float) CompositeExtract 12 0
+ 14: 6(float) CompositeExtract 12 1
+ 15: 6(float) CompositeExtract 12 2
+ 16: 6(float) CompositeExtract 12 3
+ 17: 7(fvec4) CompositeConstruct 13 14 15 16
+ 18: 7(fvec4) Load 11(input)
+ 21: 20(ivec4) ConvertFToS 18
+ 22: 7(fvec4) ConvertSToF 21
+ 23: 7(fvec4) FAdd 17 22
+ 26: 7(fvec4) FAdd 23 25
+ Store 9(@entryPointOutput) 26
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index 1e62e9c..f6c00fe 100755
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -2,9 +2,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:17 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Sequence
0:3 move second child to first child (temp int)
@@ -35,19 +35,19 @@
0:7 vector-scale (temp 4-component vector of float)
0:7 Convert int to float (temp float)
0:7 'a' (temp int)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:8 vector-scale (temp 4-component vector of float)
0:8 Convert int to float (temp float)
0:8 'b' (temp int)
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:9 vector-scale (temp 4-component vector of float)
0:9 Convert int to float (temp float)
0:9 'c' (temp int)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:10 vector-scale (temp 4-component vector of float)
0:10 Convert int to float (temp float)
0:10 'd' (temp int)
-0:10 'input' (in 4-component vector of float)
+0:10 'input' (layout(location=0 ) in 4-component vector of float)
0:12 Comma (temp int)
0:12 move second child to first child (temp int)
0:12 'e' (temp int)
@@ -85,27 +85,32 @@
0:14 Constant:
0:14 0 (const int)
0:14 direct index (temp float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 Constant:
0:14 1 (const int)
0:14 true case
0:14 vector-scale (temp 4-component vector of float)
0:14 Convert int to float (temp float)
0:14 'c' (temp int)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 false case
0:14 vector-scale (temp 4-component vector of float)
0:14 Convert int to float (temp float)
0:14 'd' (temp int)
-0:14 'input' (in 4-component vector of float)
-0:15 Branch: Return with expression
-0:15 add (temp 4-component vector of float)
-0:15 vector-scale (temp 4-component vector of float)
-0:15 Convert int to float (temp float)
-0:15 'e' (temp int)
-0:15 'ret' (temp 4-component vector of float)
-0:15 'f' (temp 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
+0:15 Sequence
+0:15 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:15 add (temp 4-component vector of float)
+0:15 vector-scale (temp 4-component vector of float)
+0:15 Convert int to float (temp float)
+0:15 'e' (temp int)
+0:15 'ret' (temp 4-component vector of float)
+0:15 'f' (temp 4-component vector of float)
+0:15 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -114,9 +119,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:17 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Sequence
0:3 move second child to first child (temp int)
@@ -147,19 +152,19 @@
0:7 vector-scale (temp 4-component vector of float)
0:7 Convert int to float (temp float)
0:7 'a' (temp int)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:8 vector-scale (temp 4-component vector of float)
0:8 Convert int to float (temp float)
0:8 'b' (temp int)
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:9 vector-scale (temp 4-component vector of float)
0:9 Convert int to float (temp float)
0:9 'c' (temp int)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:10 vector-scale (temp 4-component vector of float)
0:10 Convert int to float (temp float)
0:10 'd' (temp int)
-0:10 'input' (in 4-component vector of float)
+0:10 'input' (layout(location=0 ) in 4-component vector of float)
0:12 Comma (temp int)
0:12 move second child to first child (temp int)
0:12 'e' (temp int)
@@ -197,38 +202,42 @@
0:14 Constant:
0:14 0 (const int)
0:14 direct index (temp float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 Constant:
0:14 1 (const int)
0:14 true case
0:14 vector-scale (temp 4-component vector of float)
0:14 Convert int to float (temp float)
0:14 'c' (temp int)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 false case
0:14 vector-scale (temp 4-component vector of float)
0:14 Convert int to float (temp float)
0:14 'd' (temp int)
-0:14 'input' (in 4-component vector of float)
-0:15 Branch: Return with expression
-0:15 add (temp 4-component vector of float)
-0:15 vector-scale (temp 4-component vector of float)
-0:15 Convert int to float (temp float)
-0:15 'e' (temp int)
-0:15 'ret' (temp 4-component vector of float)
-0:15 'f' (temp 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
+0:15 Sequence
+0:15 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:15 add (temp 4-component vector of float)
+0:15 vector-scale (temp 4-component vector of float)
+0:15 Convert int to float (temp float)
+0:15 'e' (temp int)
+0:15 'ret' (temp 4-component vector of float)
+0:15 'f' (temp 4-component vector of float)
+0:15 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 89
+// Id's are bound by 91
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 22
+ EntryPoint Fragment 4 "PixelShaderFunction" 22 83
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "a"
Name 10 "b"
@@ -238,6 +247,9 @@
Name 22 "input"
Name 40 "e"
Name 57 "f"
+ Name 83 "@entryPointOutput"
+ Decorate 22(input) Location 0
+ Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -258,6 +270,8 @@
64: 59(int) Constant 1
65: TypePointer Input 15(float)
68: TypeBool
+ 82: TypePointer Output 16(fvec4)
+83(@entryPointOutput): 82(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
8(a): 7(ptr) Variable Function
@@ -347,11 +361,12 @@
71: Label
81: 16(fvec4) Load 58
Store 57(f) 81
- 82: 6(int) Load 40(e)
- 83: 15(float) ConvertSToF 82
- 84: 16(fvec4) Load 18(ret)
- 85: 16(fvec4) VectorTimesScalar 84 83
- 86: 16(fvec4) Load 57(f)
- 87: 16(fvec4) FAdd 85 86
- ReturnValue 87
+ 84: 6(int) Load 40(e)
+ 85: 15(float) ConvertSToF 84
+ 86: 16(fvec4) Load 18(ret)
+ 87: 16(fvec4) VectorTimesScalar 86 85
+ 88: 16(fvec4) Load 57(f)
+ 89: 16(fvec4) FAdd 87 88
+ Store 83(@entryPointOutput) 89
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out
index 2eef7c0..956e1bb 100644
--- a/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/Test/baseResults/hlsl.constructexpr.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:4 Function Definition: main( (global structure{temp 4-component vector of float color})
0:4 Function Parameters:
0:? Sequence
0:6 Constant:
@@ -34,9 +34,17 @@
0:15 1.000000
0:15 1.000000
0:15 1.000000
-0:16 Branch: Return with expression
-0:16 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:16 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:16 color: direct index for structure (temp 4-component vector of float)
+0:16 'ps_output' (temp structure{temp 4-component vector of float color})
+0:16 Constant:
+0:16 0 (const int)
+0:16 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
@@ -45,7 +53,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:4 Function Definition: main( (global structure{temp 4-component vector of float color})
0:4 Function Parameters:
0:? Sequence
0:6 Constant:
@@ -77,24 +85,33 @@
0:15 1.000000
0:15 1.000000
0:15 1.000000
-0:16 Branch: Return with expression
-0:16 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:16 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:16 color: direct index for structure (temp 4-component vector of float)
+0:16 'ps_output' (temp structure{temp 4-component vector of float color})
+0:16 Constant:
+0:16 0 (const int)
+0:16 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 32
+// Id's are bound by 35
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 31
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 22 "PS_OUTPUT"
MemberName 22(PS_OUTPUT) 0 "color"
Name 24 "ps_output"
+ Name 31 "color"
+ Decorate 31(color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -119,11 +136,15 @@
26: 13(float) Constant 1065353216
27: 21(fvec4) ConstantComposite 26 26 26 26
28: TypePointer Function 21(fvec4)
+ 30: TypePointer Output 21(fvec4)
+ 31(color): 30(ptr) Variable Output
4(main): 2 Function None 3
5: Label
24(ps_output): 23(ptr) Variable Function
29: 28(ptr) AccessChain 24(ps_output) 25
Store 29 27
- 30:22(PS_OUTPUT) Load 24(ps_output)
- ReturnValue 30
+ 32: 28(ptr) AccessChain 24(ps_output) 25
+ 33: 21(fvec4) Load 32
+ Store 31(color) 33
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out
new file mode 100755
index 0000000..6a44a2f
--- /dev/null
+++ b/Test/baseResults/hlsl.depthGreater.frag.out
@@ -0,0 +1,59 @@
+hlsl.depthGreater.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+using depth_greater
+0:? Sequence
+0:2 Function Definition: PixelShaderFunction(f1; (global void)
+0:2 Function Parameters:
+0:2 'depth' (out float FragDepth)
+0:? Sequence
+0:3 move second child to first child (temp float)
+0:3 'depth' (out float FragDepth)
+0:3 Constant:
+0:3 0.200000
+0:? Linker Objects
+0:? 'depth' (out float FragDepth)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+using depth_greater
+0:? Sequence
+0:2 Function Definition: PixelShaderFunction(f1; (global void)
+0:2 Function Parameters:
+0:2 'depth' (out float FragDepth)
+0:? Sequence
+0:3 move second child to first child (temp float)
+0:3 'depth' (out float FragDepth)
+0:3 Constant:
+0:3 0.200000
+0:? Linker Objects
+0:? 'depth' (out float FragDepth)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 10
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 8
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 DepthGreater
+ Name 4 "PixelShaderFunction"
+ Name 8 "depth"
+ Decorate 8(depth) BuiltIn FragDepth
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+ 8(depth): 7(ptr) Variable Output
+ 9: 6(float) Constant 1045220557
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ Store 8(depth) 9
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out
new file mode 100755
index 0000000..b1307ce
--- /dev/null
+++ b/Test/baseResults/hlsl.depthLess.frag.out
@@ -0,0 +1,60 @@
+hlsl.depthLess.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+using depth_less
+0:? Sequence
+0:2 Function Definition: PixelShaderFunction( (global float FragDepth)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child (temp float)
+0:? '@entryPointOutput' (out float unknown built-in variable)
+0:3 Constant:
+0:3 0.200000
+0:3 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (out float unknown built-in variable)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+using depth_less
+0:? Sequence
+0:2 Function Definition: PixelShaderFunction( (global float FragDepth)
+0:2 Function Parameters:
+0:? Sequence
+0:3 Sequence
+0:3 move second child to first child (temp float)
+0:? '@entryPointOutput' (out float unknown built-in variable)
+0:3 Constant:
+0:3 0.200000
+0:3 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (out float unknown built-in variable)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 11
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 8
+ ExecutionMode 4 OriginUpperLeft
+ ExecutionMode 4 DepthLess
+ Name 4 "PixelShaderFunction"
+ Name 8 "@entryPointOutput"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+8(@entryPointOutput): 7(ptr) Variable Output
+ 9: 6(float) Constant 1045220557
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ Store 8(@entryPointOutput) 9
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out
index 324029a..9601c7d 100755
--- a/Test/baseResults/hlsl.discard.frag.out
+++ b/Test/baseResults/hlsl.discard.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:7 Function Definition: foo(f1; (global void)
+0:2 Function Definition: foo(f1; (global void)
0:2 Function Parameters:
0:2 'f' (in float)
0:? Sequence
@@ -14,19 +14,19 @@
0:3 1.000000
0:3 true case
0:4 Branch: Kill
-0:15 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(vf4; (global void)
0:8 Function Parameters:
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:9 Function Call: foo(f1; (global void)
0:9 direct index (temp float)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:9 Constant:
0:9 2 (const int)
0:10 Test condition and select (temp void)
0:10 Condition
0:10 direct index (temp float)
-0:10 'input' (in 4-component vector of float)
+0:10 'input' (layout(location=0 ) in 4-component vector of float)
0:10 Constant:
0:10 0 (const int)
0:10 true case
@@ -35,11 +35,12 @@
0:12 move second child to first child (temp float)
0:12 'f' (temp float)
0:12 direct index (temp float)
-0:12 'input' (in 4-component vector of float)
+0:12 'input' (layout(location=0 ) in 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:13 Branch: Kill
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -48,7 +49,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:7 Function Definition: foo(f1; (global void)
+0:2 Function Definition: foo(f1; (global void)
0:2 Function Parameters:
0:2 'f' (in float)
0:? Sequence
@@ -60,19 +61,19 @@
0:3 1.000000
0:3 true case
0:4 Branch: Kill
-0:15 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:8 Function Definition: PixelShaderFunction(vf4; (global void)
0:8 Function Parameters:
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:9 Function Call: foo(f1; (global void)
0:9 direct index (temp float)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:9 Constant:
0:9 2 (const int)
0:10 Test condition and select (temp void)
0:10 Condition
0:10 direct index (temp float)
-0:10 'input' (in 4-component vector of float)
+0:10 'input' (layout(location=0 ) in 4-component vector of float)
0:10 Constant:
0:10 0 (const int)
0:10 true case
@@ -81,11 +82,12 @@
0:12 move second child to first child (temp float)
0:12 'f' (temp float)
0:12 direct index (temp float)
-0:12 'input' (in 4-component vector of float)
+0:12 'input' (layout(location=0 ) in 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:13 Branch: Kill
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
@@ -96,13 +98,13 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 21
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 10 "foo(f1;"
Name 9 "f"
Name 21 "input"
Name 22 "param"
Name 35 "f"
+ Decorate 21(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out
index c14a3a5..019f43d 100755
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -2,9 +2,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:7 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
@@ -19,12 +19,17 @@
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Equal (temp bool)
-0:5 'input' (in 4-component vector of float)
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:5 Loop Body
-0:5 Branch: Return with expression
-0:5 'input' (in 4-component vector of float)
+0:5 Sequence
+0:5 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -33,9 +38,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:7 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Loop with condition not tested first
0:3 Loop Condition
@@ -50,34 +55,43 @@
0:5 Loop with condition not tested first
0:5 Loop Condition
0:5 Compare Equal (temp bool)
-0:5 'input' (in 4-component vector of float)
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:5 Loop Body
-0:5 Branch: Return with expression
-0:5 'input' (in 4-component vector of float)
+0:5 Sequence
+0:5 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 31
+// Id's are bound by 33
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 23
+ EntryPoint Fragment 4 "PixelShaderFunction" 23 25
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 23 "input"
+ Name 23 "@entryPointOutput"
+ Name 25 "input"
+ Decorate 23(@entryPointOutput) Location 0
+ Decorate 25(input) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeBool
11: 10(bool) ConstantFalse
20: TypeFloat 32
21: TypeVector 20(float) 4
- 22: TypePointer Input 21(fvec4)
- 23(input): 22(ptr) Variable Input
- 28: TypeVector 10(bool) 4
+ 22: TypePointer Output 21(fvec4)
+23(@entryPointOutput): 22(ptr) Variable Output
+ 24: TypePointer Input 21(fvec4)
+ 25(input): 24(ptr) Variable Input
+ 30: TypeVector 10(bool) 4
4(PixelShaderFunction): 2 Function None 3
5: Label
Branch 6
@@ -103,14 +117,15 @@
LoopMerge 18 19 None
Branch 17
17: Label
- 24: 21(fvec4) Load 23(input)
- ReturnValue 24
+ 26: 21(fvec4) Load 25(input)
+ Store 23(@entryPointOutput) 26
+ Return
19: Label
- 26: 21(fvec4) Load 23(input)
- 27: 21(fvec4) Load 23(input)
- 29: 28(bvec4) FOrdEqual 26 27
- 30: 10(bool) All 29
- BranchConditional 30 16 18
+ 28: 21(fvec4) Load 25(input)
+ 29: 21(fvec4) Load 25(input)
+ 31: 30(bvec4) FOrdEqual 28 29
+ 32: 10(bool) All 31
+ BranchConditional 32 16 18
18: Label
Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out
new file mode 100755
index 0000000..5baea64
--- /dev/null
+++ b/Test/baseResults/hlsl.entry-in.frag.out
@@ -0,0 +1,304 @@
+hlsl.entry-in.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:8 Function Parameters:
+0:8 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add (temp float)
+0:9 direct index (temp float)
+0:9 v: direct index for structure (temp 2-component vector of float)
+0:9 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:9 direct index (temp float)
+0:9 fragCoord: direct index for structure (temp 4-component vector of float FragCoord)
+0:9 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float)
+0:13 Function Parameters:
+0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Sequence
+0:? Sequence
+0:15 move second child to first child (temp 2-component vector of float)
+0:15 v: direct index for structure (temp 2-component vector of float)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 0 (const int)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:15 move second child to first child (temp 4-component vector of float)
+0:15 fragCoord: direct index for structure (temp 4-component vector of float)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 1 (const int)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:15 move second child to first child (temp 2-component vector of int)
+0:15 i2: direct index for structure (temp 2-component vector of int)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 2 (const int)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+0:16 Sequence
+0:16 move second child to first child (temp float)
+0:16 'ret1' (temp float)
+0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:16 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:17 Sequence
+0:17 move second child to first child (temp float)
+0:17 'ret2' (temp float)
+0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:? Comma (temp float)
+0:? Sequence
+0:? move second child to first child (temp 2-component vector of float)
+0:? v: direct index for structure (temp 2-component vector of float)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 0 (const int)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:? move second child to first child (temp 4-component vector of float)
+0:? fragCoord: direct index for structure (temp 4-component vector of float)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 1 (const int)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:? move second child to first child (temp 2-component vector of int)
+0:? i2: direct index for structure (temp 2-component vector of int)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 2 (const int)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:19 Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:19 vector-scale (temp 4-component vector of float)
+0:19 vector-scale (temp 4-component vector of float)
+0:19 fragCoord: direct index for structure (temp 4-component vector of float)
+0:19 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:19 Constant:
+0:19 1 (const int)
+0:19 'ret1' (temp float)
+0:19 'ret2' (temp float)
+0:19 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:8 Function Definition: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:8 Function Parameters:
+0:8 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Sequence
+0:9 Branch: Return with expression
+0:9 add (temp float)
+0:9 direct index (temp float)
+0:9 v: direct index for structure (temp 2-component vector of float)
+0:9 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:9 Constant:
+0:9 0 (const int)
+0:9 Constant:
+0:9 1 (const int)
+0:9 direct index (temp float)
+0:9 fragCoord: direct index for structure (temp 4-component vector of float FragCoord)
+0:9 'p' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:9 Constant:
+0:9 1 (const int)
+0:9 Constant:
+0:9 0 (const int)
+0:13 Function Definition: PixelShaderFunction(struct-InParam-vf2-vf4-vi21; (global 4-component vector of float)
+0:13 Function Parameters:
+0:13 'i' (in structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Sequence
+0:? Sequence
+0:15 move second child to first child (temp 2-component vector of float)
+0:15 v: direct index for structure (temp 2-component vector of float)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 0 (const int)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:15 move second child to first child (temp 4-component vector of float)
+0:15 fragCoord: direct index for structure (temp 4-component vector of float)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 1 (const int)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:15 move second child to first child (temp 2-component vector of int)
+0:15 i2: direct index for structure (temp 2-component vector of int)
+0:15 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:15 Constant:
+0:15 2 (const int)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+0:16 Sequence
+0:16 move second child to first child (temp float)
+0:16 'ret1' (temp float)
+0:16 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:16 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:17 Sequence
+0:17 move second child to first child (temp float)
+0:17 'ret2' (temp float)
+0:17 Function Call: fun(struct-InParam-vf2-vf4-vi21; (global float)
+0:? Comma (temp float)
+0:? Sequence
+0:? move second child to first child (temp 2-component vector of float)
+0:? v: direct index for structure (temp 2-component vector of float)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 0 (const int)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:? move second child to first child (temp 4-component vector of float)
+0:? fragCoord: direct index for structure (temp 4-component vector of float)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 1 (const int)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:? move second child to first child (temp 2-component vector of int)
+0:? i2: direct index for structure (temp 2-component vector of int)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:? Constant:
+0:? 2 (const int)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+0:? 'aggShadow' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:19 Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:19 vector-scale (temp 4-component vector of float)
+0:19 vector-scale (temp 4-component vector of float)
+0:19 fragCoord: direct index for structure (temp 4-component vector of float)
+0:19 'local' (temp structure{temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
+0:19 Constant:
+0:19 1 (const int)
+0:19 'ret1' (temp float)
+0:19 'ret2' (temp float)
+0:19 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'v' (layout(location=0 ) in 2-component vector of float)
+0:? 'fragCoord' (in 4-component vector of float FragCoord)
+0:? 'i2' (layout(location=1 ) in 2-component vector of int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 71
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 32 37 43 63
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "PixelShaderFunction"
+ Name 11 "InParam"
+ MemberName 11(InParam) 0 "v"
+ MemberName 11(InParam) 1 "fragCoord"
+ MemberName 11(InParam) 2 "i2"
+ Name 15 "fun(struct-InParam-vf2-vf4-vi21;"
+ Name 14 "p"
+ Name 30 "local"
+ Name 32 "v"
+ Name 37 "fragCoord"
+ Name 43 "i2"
+ Name 47 "ret1"
+ Name 48 "param"
+ Name 51 "ret2"
+ Name 52 "aggShadow"
+ Name 59 "param"
+ Name 63 "@entryPointOutput"
+ Decorate 32(v) Location 0
+ Decorate 37(fragCoord) BuiltIn FragCoord
+ Decorate 43(i2) Location 1
+ Decorate 63(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 2
+ 8: TypeVector 6(float) 4
+ 9: TypeInt 32 1
+ 10: TypeVector 9(int) 2
+ 11(InParam): TypeStruct 7(fvec2) 8(fvec4) 10(ivec2)
+ 12: TypePointer Function 11(InParam)
+ 13: TypeFunction 6(float) 12(ptr)
+ 17: 9(int) Constant 0
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 1
+ 20: TypePointer Function 6(float)
+ 23: 9(int) Constant 1
+ 24: 18(int) Constant 0
+ 31: TypePointer Input 7(fvec2)
+ 32(v): 31(ptr) Variable Input
+ 34: TypePointer Function 7(fvec2)
+ 36: TypePointer Input 8(fvec4)
+ 37(fragCoord): 36(ptr) Variable Input
+ 39: TypePointer Function 8(fvec4)
+ 41: 9(int) Constant 2
+ 42: TypePointer Input 10(ivec2)
+ 43(i2): 42(ptr) Variable Input
+ 45: TypePointer Function 10(ivec2)
+ 62: TypePointer Output 8(fvec4)
+63(@entryPointOutput): 62(ptr) Variable Output
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ 30(local): 12(ptr) Variable Function
+ 47(ret1): 20(ptr) Variable Function
+ 48(param): 12(ptr) Variable Function
+ 51(ret2): 20(ptr) Variable Function
+ 52(aggShadow): 12(ptr) Variable Function
+ 59(param): 20(ptr) Variable Function
+ 33: 7(fvec2) Load 32(v)
+ 35: 34(ptr) AccessChain 30(local) 17
+ Store 35 33
+ 38: 8(fvec4) Load 37(fragCoord)
+ 40: 39(ptr) AccessChain 30(local) 23
+ Store 40 38
+ 44: 10(ivec2) Load 43(i2)
+ 46: 45(ptr) AccessChain 30(local) 41
+ Store 46 44
+ 49: 11(InParam) Load 30(local)
+ Store 48(param) 49
+ 50: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 48(param)
+ Store 47(ret1) 50
+ 53: 7(fvec2) Load 32(v)
+ 54: 34(ptr) AccessChain 52(aggShadow) 17
+ Store 54 53
+ 55: 8(fvec4) Load 37(fragCoord)
+ 56: 39(ptr) AccessChain 52(aggShadow) 23
+ Store 56 55
+ 57: 10(ivec2) Load 43(i2)
+ 58: 45(ptr) AccessChain 52(aggShadow) 41
+ Store 58 57
+ 60: 11(InParam) Load 52(aggShadow)
+ Store 59(param) 60
+ 61: 6(float) FunctionCall 15(fun(struct-InParam-vf2-vf4-vi21;) 59(param)
+ Store 51(ret2) 61
+ 64: 39(ptr) AccessChain 30(local) 23
+ 65: 8(fvec4) Load 64
+ 66: 6(float) Load 47(ret1)
+ 67: 8(fvec4) VectorTimesScalar 65 66
+ 68: 6(float) Load 51(ret2)
+ 69: 8(fvec4) VectorTimesScalar 67 68
+ Store 63(@entryPointOutput) 69
+ Return
+ FunctionEnd
+15(fun(struct-InParam-vf2-vf4-vi21;): 6(float) Function None 13
+ 14(p): 12(ptr) FunctionParameter
+ 16: Label
+ 21: 20(ptr) AccessChain 14(p) 17 19
+ 22: 6(float) Load 21
+ 25: 20(ptr) AccessChain 14(p) 23 24
+ 26: 6(float) Load 25
+ 27: 6(float) FAdd 22 26
+ ReturnValue 27
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out
new file mode 100755
index 0000000..81926dd
--- /dev/null
+++ b/Test/baseResults/hlsl.entry-out.frag.out
@@ -0,0 +1,218 @@
+hlsl.entry-out.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float)
+0:7 Function Parameters:
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 'out1' (layout(location=1 ) out 4-component vector of float)
+0:7 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:7 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:? Sequence
+0:8 move second child to first child (temp 4-component vector of float)
+0:8 'out1' (layout(location=1 ) out 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
+0:9 move second child to first child (temp 2-component vector of float)
+0:? 'v' (layout(location=2 ) out 2-component vector of float)
+0:9 Constant:
+0:9 2.000000
+0:9 2.000000
+0:10 move second child to first child (temp 2-component vector of int)
+0:? 'i' (layout(location=3 ) out 2-component vector of int)
+0:10 Constant:
+0:10 3 (const int)
+0:10 3 (const int)
+0:12 move second child to first child (temp 2-component vector of float)
+0:12 v: direct index for structure (temp 2-component vector of float)
+0:12 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 12.000000
+0:12 12.000000
+0:13 move second child to first child (temp 2-component vector of int)
+0:13 i: direct index for structure (temp 2-component vector of int)
+0:13 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 13 (const int)
+0:13 13 (const int)
+0:? Sequence
+0:14 move second child to first child (temp 2-component vector of float)
+0:? 'v' (layout(location=4 ) out 2-component vector of float)
+0:14 v: direct index for structure (temp 2-component vector of float)
+0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child (temp 2-component vector of int)
+0:? 'i' (layout(location=5 ) out 2-component vector of int)
+0:14 i: direct index for structure (temp 2-component vector of int)
+0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:14 Constant:
+0:14 1 (const int)
+0:16 Sequence
+0:16 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:16 'out1' (layout(location=1 ) out 4-component vector of float)
+0:16 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'out1' (layout(location=1 ) out 4-component vector of float)
+0:? 'v' (layout(location=2 ) out 2-component vector of float)
+0:? 'i' (layout(location=3 ) out 2-component vector of int)
+0:? 'v' (layout(location=4 ) out 2-component vector of float)
+0:? 'i' (layout(location=5 ) out 2-component vector of int)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:7 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (global 4-component vector of float)
+0:7 Function Parameters:
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 'out1' (layout(location=1 ) out 4-component vector of float)
+0:7 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:7 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:? Sequence
+0:8 move second child to first child (temp 4-component vector of float)
+0:8 'out1' (layout(location=1 ) out 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
+0:9 move second child to first child (temp 2-component vector of float)
+0:? 'v' (layout(location=2 ) out 2-component vector of float)
+0:9 Constant:
+0:9 2.000000
+0:9 2.000000
+0:10 move second child to first child (temp 2-component vector of int)
+0:? 'i' (layout(location=3 ) out 2-component vector of int)
+0:10 Constant:
+0:10 3 (const int)
+0:10 3 (const int)
+0:12 move second child to first child (temp 2-component vector of float)
+0:12 v: direct index for structure (temp 2-component vector of float)
+0:12 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:12 Constant:
+0:12 0 (const int)
+0:12 Constant:
+0:12 12.000000
+0:12 12.000000
+0:13 move second child to first child (temp 2-component vector of int)
+0:13 i: direct index for structure (temp 2-component vector of int)
+0:13 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:13 Constant:
+0:13 1 (const int)
+0:13 Constant:
+0:13 13 (const int)
+0:13 13 (const int)
+0:? Sequence
+0:14 move second child to first child (temp 2-component vector of float)
+0:? 'v' (layout(location=4 ) out 2-component vector of float)
+0:14 v: direct index for structure (temp 2-component vector of float)
+0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:14 Constant:
+0:14 0 (const int)
+0:14 move second child to first child (temp 2-component vector of int)
+0:? 'i' (layout(location=5 ) out 2-component vector of int)
+0:14 i: direct index for structure (temp 2-component vector of int)
+0:14 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i})
+0:14 Constant:
+0:14 1 (const int)
+0:16 Sequence
+0:16 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:16 'out1' (layout(location=1 ) out 4-component vector of float)
+0:16 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'out1' (layout(location=1 ) out 4-component vector of float)
+0:? 'v' (layout(location=2 ) out 2-component vector of float)
+0:? 'i' (layout(location=3 ) out 2-component vector of int)
+0:? 'v' (layout(location=4 ) out 2-component vector of float)
+0:? 'i' (layout(location=5 ) out 2-component vector of int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 46
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11 15 21 37 40 43
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "PixelShaderFunction"
+ Name 9 "out1"
+ Name 11 "input"
+ Name 15 "v"
+ Name 21 "i"
+ Name 24 "OutParam"
+ MemberName 24(OutParam) 0 "v"
+ MemberName 24(OutParam) 1 "i"
+ Name 26 "local"
+ Name 37 "v"
+ Name 40 "i"
+ Name 43 "@entryPointOutput"
+ Decorate 9(out1) Location 1
+ Decorate 11(input) Location 0
+ Decorate 15(v) Location 2
+ Decorate 21(i) Location 3
+ Decorate 37(v) Location 4
+ Decorate 40(i) Location 5
+ Decorate 43(@entryPointOutput) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(out1): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(input): 10(ptr) Variable Input
+ 13: TypeVector 6(float) 2
+ 14: TypePointer Output 13(fvec2)
+ 15(v): 14(ptr) Variable Output
+ 16: 6(float) Constant 1073741824
+ 17: 13(fvec2) ConstantComposite 16 16
+ 18: TypeInt 32 1
+ 19: TypeVector 18(int) 2
+ 20: TypePointer Output 19(ivec2)
+ 21(i): 20(ptr) Variable Output
+ 22: 18(int) Constant 3
+ 23: 19(ivec2) ConstantComposite 22 22
+ 24(OutParam): TypeStruct 13(fvec2) 19(ivec2)
+ 25: TypePointer Function 24(OutParam)
+ 27: 18(int) Constant 0
+ 28: 6(float) Constant 1094713344
+ 29: 13(fvec2) ConstantComposite 28 28
+ 30: TypePointer Function 13(fvec2)
+ 32: 18(int) Constant 1
+ 33: 18(int) Constant 13
+ 34: 19(ivec2) ConstantComposite 33 33
+ 35: TypePointer Function 19(ivec2)
+ 37(v): 14(ptr) Variable Output
+ 40(i): 20(ptr) Variable Output
+43(@entryPointOutput): 8(ptr) Variable Output
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ 26(local): 25(ptr) Variable Function
+ 12: 7(fvec4) Load 11(input)
+ Store 9(out1) 12
+ Store 15(v) 17
+ Store 21(i) 23
+ 31: 30(ptr) AccessChain 26(local) 27
+ Store 31 29
+ 36: 35(ptr) AccessChain 26(local) 32
+ Store 36 34
+ 38: 30(ptr) AccessChain 26(local) 27
+ 39: 13(fvec2) Load 38
+ Store 37(v) 39
+ 41: 35(ptr) AccessChain 26(local) 32
+ 42: 19(ivec2) Load 41
+ Store 40(i) 42
+ 44: 7(fvec4) Load 9(out1)
+ Store 43(@entryPointOutput) 44
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 07de03e..313be0b 100755
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -12,7 +12,7 @@
0:2 'scalar' (global float)
0:2 Constant:
0:2 2.000000
-0:8 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:5 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
@@ -46,7 +46,7 @@
0:2 'scalar' (global float)
0:2 Constant:
0:2 2.000000
-0:8 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:5 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:5 Function Parameters:
0:5 'inFloat1' (in 1-component vector of float)
0:5 'inScalar' (in float)
@@ -72,7 +72,6 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"
diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 370a506..85b3c9b 100755
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -13,7 +13,7 @@
0:? 0.500000
0:? 0.000000
0:? 1.000000
-0:12 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:9 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
@@ -26,7 +26,7 @@
0:? 'ff1' (global bool Face)
0:? 'ff2' (layout(offset=4 ) global 4-component vector of float)
0:? 'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float)
-0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float FragCoord)
+0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float)
Linked fragment stage:
@@ -43,7 +43,7 @@
0:? 0.500000
0:? 0.000000
0:? 1.000000
-0:12 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:9 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:9 Function Parameters:
0:9 'input' (in 4-component vector of float)
0:? Sequence
@@ -56,7 +56,7 @@
0:? 'ff1' (global bool Face)
0:? 'ff2' (layout(offset=4 ) global 4-component vector of float)
0:? 'ff3' (layout(binding=0 offset=4 ) global 4-component vector of float)
-0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float FragCoord)
+0:? 'ff4' (layout(binding=1 offset=4 ) global 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
@@ -67,7 +67,6 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
@@ -82,7 +81,6 @@
Decorate 28(ff3) Binding 0
Decorate 29(ff4) Offset 4
Decorate 29(ff4) Binding 1
- Decorate 29(ff4) BuiltIn FragCoord
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out
index 9764e26..ba8e32e 100755
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -2,9 +2,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:? Sequence
0:3 Loop with condition tested first
@@ -12,7 +12,7 @@
0:3 No loop body
0:4 Sequence
0:4 Pre-Increment (temp 4-component vector of float)
-0:4 'input' (in 4-component vector of float)
+0:4 'input' (layout(location=0 ) in 4-component vector of float)
0:4 Loop with condition tested first
0:4 No loop condition
0:4 No loop body
@@ -20,36 +20,42 @@
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Compare Not Equal (temp bool)
-0:5 'input' (in 4-component vector of float)
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:5 No loop body
0:? Sequence
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Compare Not Equal (temp bool)
-0:6 'input' (in 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
0:6 Loop Body
0:? Sequence
-0:6 Branch: Return with expression
-0:6 Negate value (temp 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 Sequence
+0:6 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:6 Negate value (temp 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 Branch: Return
0:7 Sequence
0:7 Pre-Decrement (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Not Equal (temp bool)
-0:7 'input' (in 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Loop Body
0:? Sequence
-0:7 Branch: Return with expression
-0:7 Negate value (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:7 Negate value (temp 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 Branch: Return
0:7 Loop Terminal Expression
0:7 add second child into first child (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Sequence
@@ -60,7 +66,7 @@
0:8 Condition
0:8 Compare Greater Than (temp bool)
0:8 direct index (temp float)
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
@@ -75,7 +81,7 @@
0:9 Condition
0:9 Compare Greater Than (temp bool)
0:9 direct index (temp float)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
@@ -108,6 +114,8 @@
0:12 Pre-Decrement (temp float)
0:12 'ii' (temp float)
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -116,9 +124,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:? Sequence
0:3 Loop with condition tested first
@@ -126,7 +134,7 @@
0:3 No loop body
0:4 Sequence
0:4 Pre-Increment (temp 4-component vector of float)
-0:4 'input' (in 4-component vector of float)
+0:4 'input' (layout(location=0 ) in 4-component vector of float)
0:4 Loop with condition tested first
0:4 No loop condition
0:4 No loop body
@@ -134,36 +142,42 @@
0:5 Loop with condition tested first
0:5 Loop Condition
0:5 Compare Not Equal (temp bool)
-0:5 'input' (in 4-component vector of float)
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:5 No loop body
0:? Sequence
0:6 Loop with condition tested first
0:6 Loop Condition
0:6 Compare Not Equal (temp bool)
-0:6 'input' (in 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
0:6 Loop Body
0:? Sequence
-0:6 Branch: Return with expression
-0:6 Negate value (temp 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 Sequence
+0:6 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:6 Negate value (temp 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 Branch: Return
0:7 Sequence
0:7 Pre-Decrement (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Loop with condition tested first
0:7 Loop Condition
0:7 Compare Not Equal (temp bool)
-0:7 'input' (in 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Loop Body
0:? Sequence
-0:7 Branch: Return with expression
-0:7 Negate value (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:7 Negate value (temp 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 Branch: Return
0:7 Loop Terminal Expression
0:7 add second child into first child (temp 4-component vector of float)
-0:7 'input' (in 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
0:7 Constant:
0:7 2.000000
0:? Sequence
@@ -174,7 +188,7 @@
0:8 Condition
0:8 Compare Greater Than (temp bool)
0:8 direct index (temp float)
-0:8 'input' (in 4-component vector of float)
+0:8 'input' (layout(location=0 ) in 4-component vector of float)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
@@ -189,7 +203,7 @@
0:9 Condition
0:9 Compare Greater Than (temp bool)
0:9 direct index (temp float)
-0:9 'input' (in 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
@@ -222,21 +236,25 @@
0:12 Pre-Decrement (temp float)
0:12 'ii' (temp float)
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 112
+// Id's are bound by 114
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 13
+ EntryPoint Fragment 4 "PixelShaderFunction" 13 43
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 13 "input"
- Name 89 "ii"
- Name 109 "ii"
+ Name 43 "@entryPointOutput"
+ Name 91 "ii"
+ Name 111 "ii"
+ Decorate 13(input) Location 0
+ Decorate 43(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@@ -246,21 +264,23 @@
15: 10(float) Constant 1065353216
29: TypeBool
30: TypeVector 29(bool) 4
- 60: 10(float) Constant 1073741824
- 68: TypeInt 32 0
- 69: 68(int) Constant 0
- 70: TypePointer Input 10(float)
- 87: TypeInt 32 1
- 88: TypePointer Function 87(int)
- 90: 87(int) Constant 4294967295
- 97: 87(int) Constant 3
- 100: 87(int) Constant 2
- 106: 87(int) Constant 1
- 108: TypePointer Function 10(float)
+ 42: TypePointer Output 11(fvec4)
+43(@entryPointOutput): 42(ptr) Variable Output
+ 62: 10(float) Constant 1073741824
+ 70: TypeInt 32 0
+ 71: 70(int) Constant 0
+ 72: TypePointer Input 10(float)
+ 89: TypeInt 32 1
+ 90: TypePointer Function 89(int)
+ 92: 89(int) Constant 4294967295
+ 99: 89(int) Constant 3
+ 102: 89(int) Constant 2
+ 108: 89(int) Constant 1
+ 110: TypePointer Function 10(float)
4(PixelShaderFunction): 2 Function None 3
5: Label
- 89(ii): 88(ptr) Variable Function
- 109(ii): 108(ptr) Variable Function
+ 91(ii): 90(ptr) Variable Function
+ 111(ii): 110(ptr) Variable Function
Branch 6
6: Label
LoopMerge 8 9 None
@@ -309,97 +329,99 @@
41: 29(bool) Any 40
BranchConditional 41 34 35
34: Label
- 42: 11(fvec4) Load 13(input)
- 43: 11(fvec4) FNegate 42
- ReturnValue 43
+ 44: 11(fvec4) Load 13(input)
+ 45: 11(fvec4) FNegate 44
+ Store 43(@entryPointOutput) 45
+ Return
36: Label
Branch 33
35: Label
- 45: 11(fvec4) Load 13(input)
- 46: 11(fvec4) CompositeConstruct 15 15 15 15
- 47: 11(fvec4) FSub 45 46
- Store 13(input) 47
- Branch 48
- 48: Label
- LoopMerge 50 51 None
- Branch 52
- 52: Label
- 53: 11(fvec4) Load 13(input)
- 54: 11(fvec4) Load 13(input)
- 55: 30(bvec4) FOrdNotEqual 53 54
- 56: 29(bool) Any 55
- BranchConditional 56 49 50
- 49: Label
- 57: 11(fvec4) Load 13(input)
- 58: 11(fvec4) FNegate 57
- ReturnValue 58
- 51: Label
- 61: 11(fvec4) Load 13(input)
- 62: 11(fvec4) CompositeConstruct 60 60 60 60
- 63: 11(fvec4) FAdd 61 62
- Store 13(input) 63
- Branch 48
+ 47: 11(fvec4) Load 13(input)
+ 48: 11(fvec4) CompositeConstruct 15 15 15 15
+ 49: 11(fvec4) FSub 47 48
+ Store 13(input) 49
+ Branch 50
50: Label
- Branch 64
- 64: Label
- LoopMerge 66 67 None
- Branch 65
- 65: Label
- 71: 70(ptr) AccessChain 13(input) 69
- 72: 10(float) Load 71
- 73: 29(bool) FOrdGreaterThan 72 60
- SelectionMerge 75 None
- BranchConditional 73 74 75
- 74: Label
- Branch 66
- 75: Label
+ LoopMerge 52 53 None
+ Branch 54
+ 54: Label
+ 55: 11(fvec4) Load 13(input)
+ 56: 11(fvec4) Load 13(input)
+ 57: 30(bvec4) FOrdNotEqual 55 56
+ 58: 29(bool) Any 57
+ BranchConditional 58 51 52
+ 51: Label
+ 59: 11(fvec4) Load 13(input)
+ 60: 11(fvec4) FNegate 59
+ Store 43(@entryPointOutput) 60
+ Return
+ 53: Label
+ 63: 11(fvec4) Load 13(input)
+ 64: 11(fvec4) CompositeConstruct 62 62 62 62
+ 65: 11(fvec4) FAdd 63 64
+ Store 13(input) 65
+ Branch 50
+ 52: Label
+ Branch 66
+ 66: Label
+ LoopMerge 68 69 None
Branch 67
67: Label
- Branch 64
- 66: Label
- Branch 77
+ 73: 72(ptr) AccessChain 13(input) 71
+ 74: 10(float) Load 73
+ 75: 29(bool) FOrdGreaterThan 74 62
+ SelectionMerge 77 None
+ BranchConditional 75 76 77
+ 76: Label
+ Branch 68
77: Label
- LoopMerge 79 80 None
- Branch 78
- 78: Label
- 81: 70(ptr) AccessChain 13(input) 69
- 82: 10(float) Load 81
- 83: 29(bool) FOrdGreaterThan 82 60
- SelectionMerge 85 None
- BranchConditional 83 84 85
- 84: Label
- Branch 80
- 85: Label
+ Branch 69
+ 69: Label
+ Branch 66
+ 68: Label
+ Branch 79
+ 79: Label
+ LoopMerge 81 82 None
Branch 80
80: Label
- Branch 77
- 79: Label
- Store 89(ii) 90
- Branch 91
- 91: Label
- LoopMerge 93 94 None
- Branch 95
- 95: Label
- 96: 87(int) Load 89(ii)
- 98: 29(bool) SLessThan 96 97
- BranchConditional 98 92 93
- 92: Label
- 99: 87(int) Load 89(ii)
- 101: 29(bool) IEqual 99 100
- SelectionMerge 103 None
- BranchConditional 101 102 103
- 102: Label
- Branch 94
- 103: Label
- Branch 94
- 94: Label
- 105: 87(int) Load 89(ii)
- 107: 87(int) IAdd 105 106
- Store 89(ii) 107
- Branch 91
+ 83: 72(ptr) AccessChain 13(input) 71
+ 84: 10(float) Load 83
+ 85: 29(bool) FOrdGreaterThan 84 62
+ SelectionMerge 87 None
+ BranchConditional 85 86 87
+ 86: Label
+ Branch 82
+ 87: Label
+ Branch 82
+ 82: Label
+ Branch 79
+ 81: Label
+ Store 91(ii) 92
+ Branch 93
93: Label
- 110: 10(float) Load 109(ii)
- 111: 10(float) FSub 110 15
- Store 109(ii) 111
+ LoopMerge 95 96 None
+ Branch 97
+ 97: Label
+ 98: 89(int) Load 91(ii)
+ 100: 29(bool) SLessThan 98 99
+ BranchConditional 100 94 95
+ 94: Label
+ 101: 89(int) Load 91(ii)
+ 103: 29(bool) IEqual 101 102
+ SelectionMerge 105 None
+ BranchConditional 103 104 105
+ 104: Label
+ Branch 96
+ 105: Label
+ Branch 96
+ 96: Label
+ 107: 89(int) Load 91(ii)
+ 109: 89(int) IAdd 107 108
+ Store 91(ii) 109
+ Branch 93
+ 95: Label
+ 112: 10(float) Load 111(ii)
+ 113: 10(float) FSub 112 15
+ Store 111(ii) 113
Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index 70d1bf1..d2545cc 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:29 Sequence
@@ -76,7 +76,7 @@
0:? 1.000000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -85,14 +85,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -105,6 +118,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -113,7 +128,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:29 Sequence
@@ -187,7 +202,7 @@
0:? 1.000000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -196,14 +211,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -216,19 +244,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 110
+// Id's are bound by 117
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 99 103
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4a"
@@ -247,10 +276,12 @@
MemberName 90(PS_OUTPUT) 0 "Color"
MemberName 90(PS_OUTPUT) 1 "Depth"
Name 92 "psout"
- Name 102 "g_tTex1df4a"
- Name 103 "g_tTex1df4"
- Name 106 "g_tTex1di4a"
- Name 109 "g_tTex1du4a"
+ Name 99 "Color"
+ Name 103 "Depth"
+ Name 109 "g_tTex1df4a"
+ Name 110 "g_tTex1df4"
+ Name 113 "g_tTex1di4a"
+ Name 116 "g_tTex1du4a"
Decorate 12(g_tTex2df4a) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
@@ -259,13 +290,14 @@
Decorate 60(g_tTexcdf4a) DescriptorSet 0
Decorate 70(g_tTexcdi4a) DescriptorSet 0
Decorate 80(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 90(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 102(g_tTex1df4a) DescriptorSet 0
- Decorate 102(g_tTex1df4a) Binding 1
- Decorate 103(g_tTex1df4) DescriptorSet 0
- Decorate 103(g_tTex1df4) Binding 0
- Decorate 106(g_tTex1di4a) DescriptorSet 0
- Decorate 109(g_tTex1du4a) DescriptorSet 0
+ Decorate 99(Color) Location 0
+ Decorate 103(Depth) BuiltIn FragDepth
+ Decorate 109(g_tTex1df4a) DescriptorSet 0
+ Decorate 109(g_tTex1df4a) Binding 1
+ Decorate 110(g_tTex1df4) DescriptorSet 0
+ Decorate 110(g_tTex1df4) Binding 0
+ Decorate 113(g_tTex1di4a) DescriptorSet 0
+ Decorate 116(g_tTex1du4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -327,16 +359,20 @@
93: 7(fvec4) ConstantComposite 87 87 87 87
95: 25(int) Constant 1
96: TypePointer Function 6(float)
- 100: TypeImage 6(float) 1D array sampled format:Unknown
- 101: TypePointer UniformConstant 100
-102(g_tTex1df4a): 101(ptr) Variable UniformConstant
- 103(g_tTex1df4): 101(ptr) Variable UniformConstant
- 104: TypeImage 25(int) 1D array sampled format:Unknown
- 105: TypePointer UniformConstant 104
-106(g_tTex1di4a): 105(ptr) Variable UniformConstant
- 107: TypeImage 42(int) 1D array sampled format:Unknown
+ 98: TypePointer Output 7(fvec4)
+ 99(Color): 98(ptr) Variable Output
+ 102: TypePointer Output 6(float)
+ 103(Depth): 102(ptr) Variable Output
+ 107: TypeImage 6(float) 1D array sampled format:Unknown
108: TypePointer UniformConstant 107
-109(g_tTex1du4a): 108(ptr) Variable UniformConstant
+109(g_tTex1df4a): 108(ptr) Variable UniformConstant
+ 110(g_tTex1df4): 108(ptr) Variable UniformConstant
+ 111: TypeImage 25(int) 1D array sampled format:Unknown
+ 112: TypePointer UniformConstant 111
+113(g_tTex1di4a): 112(ptr) Variable UniformConstant
+ 114: TypeImage 42(int) 1D array sampled format:Unknown
+ 115: TypePointer UniformConstant 114
+116(g_tTex1du4a): 115(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
@@ -380,6 +416,11 @@
Store 94 93
97: 96(ptr) AccessChain 92(psout) 95
Store 97 87
- 98:90(PS_OUTPUT) Load 92(psout)
- ReturnValue 98
+ 100: 8(ptr) AccessChain 92(psout) 26
+ 101: 7(fvec4) Load 100
+ Store 99(Color) 101
+ 104: 96(ptr) AccessChain 92(psout) 95
+ 105: 6(float) Load 104
+ Store 103(Depth) 105
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index c52d7cd..52648f7 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:49 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:29 Function Parameters:
0:? Sequence
0:34 Sequence
@@ -70,7 +70,7 @@
0:? 0.900000
0:44 move second child to first child (temp 4-component vector of float)
0:44 Color: direct index for structure (temp 4-component vector of float)
-0:44 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:44 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
@@ -79,14 +79,27 @@
0:44 1.000000
0:44 1.000000
0:45 move second child to first child (temp float)
-0:45 Depth: direct index for structure (temp float FragDepth)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 Depth: direct index for structure (temp float)
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1.000000
-0:47 Branch: Return with expression
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:47 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:47 Color: direct index for structure (temp 4-component vector of float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:47 Constant:
+0:47 0 (const int)
+0:47 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:47 Depth: direct index for structure (temp float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:47 Constant:
+0:47 1 (const int)
+0:47 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -103,6 +116,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -111,7 +126,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:49 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:29 Function Parameters:
0:? Sequence
0:34 Sequence
@@ -179,7 +194,7 @@
0:? 0.900000
0:44 move second child to first child (temp 4-component vector of float)
0:44 Color: direct index for structure (temp 4-component vector of float)
-0:44 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:44 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:44 Constant:
0:44 0 (const int)
0:44 Constant:
@@ -188,14 +203,27 @@
0:44 1.000000
0:44 1.000000
0:45 move second child to first child (temp float)
-0:45 Depth: direct index for structure (temp float FragDepth)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 Depth: direct index for structure (temp float)
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 1 (const int)
0:45 Constant:
0:45 1.000000
-0:47 Branch: Return with expression
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:47 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:47 Color: direct index for structure (temp 4-component vector of float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:47 Constant:
+0:47 0 (const int)
+0:47 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:47 Depth: direct index for structure (temp float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:47 Constant:
+0:47 1 (const int)
+0:47 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -212,18 +240,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 121
+// Id's are bound by 128
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 100 104
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
@@ -242,14 +271,16 @@
MemberName 90(PS_OUTPUT) 0 "Color"
MemberName 90(PS_OUTPUT) 1 "Depth"
Name 92 "psout"
- Name 101 "g_sSamp2d"
- Name 104 "g_tTex1df4a"
- Name 105 "g_tTex1df4"
- Name 108 "g_tTex1di4"
- Name 111 "g_tTex1du4"
- Name 114 "g_tTex3df4"
- Name 117 "g_tTex3di4"
- Name 120 "g_tTex3du4"
+ Name 100 "Color"
+ Name 104 "Depth"
+ Name 108 "g_sSamp2d"
+ Name 111 "g_tTex1df4a"
+ Name 112 "g_tTex1df4"
+ Name 115 "g_tTex1di4"
+ Name 118 "g_tTex1du4"
+ Name 121 "g_tTex3df4"
+ Name 124 "g_tTex3di4"
+ Name 127 "g_tTex3du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
@@ -258,17 +289,18 @@
Decorate 59(g_tTexcdf4) DescriptorSet 0
Decorate 70(g_tTexcdi4) DescriptorSet 0
Decorate 80(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 90(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 101(g_sSamp2d) DescriptorSet 0
- Decorate 104(g_tTex1df4a) DescriptorSet 0
- Decorate 104(g_tTex1df4a) Binding 1
- Decorate 105(g_tTex1df4) DescriptorSet 0
- Decorate 105(g_tTex1df4) Binding 0
- Decorate 108(g_tTex1di4) DescriptorSet 0
- Decorate 111(g_tTex1du4) DescriptorSet 0
- Decorate 114(g_tTex3df4) DescriptorSet 0
- Decorate 117(g_tTex3di4) DescriptorSet 0
- Decorate 120(g_tTex3du4) DescriptorSet 0
+ Decorate 100(Color) Location 0
+ Decorate 104(Depth) BuiltIn FragDepth
+ Decorate 108(g_sSamp2d) DescriptorSet 0
+ Decorate 111(g_tTex1df4a) DescriptorSet 0
+ Decorate 111(g_tTex1df4a) Binding 1
+ Decorate 112(g_tTex1df4) DescriptorSet 0
+ Decorate 112(g_tTex1df4) Binding 0
+ Decorate 115(g_tTex1di4) DescriptorSet 0
+ Decorate 118(g_tTex1du4) DescriptorSet 0
+ Decorate 121(g_tTex3df4) DescriptorSet 0
+ Decorate 124(g_tTex3di4) DescriptorSet 0
+ Decorate 127(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -331,26 +363,30 @@
94: 7(fvec4) ConstantComposite 93 93 93 93
96: 24(int) Constant 1
97: TypePointer Function 6(float)
- 101(g_sSamp2d): 15(ptr) Variable UniformConstant
- 102: TypeImage 6(float) 1D sampled format:Unknown
- 103: TypePointer UniformConstant 102
-104(g_tTex1df4a): 103(ptr) Variable UniformConstant
- 105(g_tTex1df4): 103(ptr) Variable UniformConstant
- 106: TypeImage 24(int) 1D sampled format:Unknown
- 107: TypePointer UniformConstant 106
- 108(g_tTex1di4): 107(ptr) Variable UniformConstant
- 109: TypeImage 41(int) 1D sampled format:Unknown
+ 99: TypePointer Output 7(fvec4)
+ 100(Color): 99(ptr) Variable Output
+ 103: TypePointer Output 6(float)
+ 104(Depth): 103(ptr) Variable Output
+ 108(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 109: TypeImage 6(float) 1D sampled format:Unknown
110: TypePointer UniformConstant 109
- 111(g_tTex1du4): 110(ptr) Variable UniformConstant
- 112: TypeImage 6(float) 3D sampled format:Unknown
- 113: TypePointer UniformConstant 112
- 114(g_tTex3df4): 113(ptr) Variable UniformConstant
- 115: TypeImage 24(int) 3D sampled format:Unknown
- 116: TypePointer UniformConstant 115
- 117(g_tTex3di4): 116(ptr) Variable UniformConstant
- 118: TypeImage 41(int) 3D sampled format:Unknown
- 119: TypePointer UniformConstant 118
- 120(g_tTex3du4): 119(ptr) Variable UniformConstant
+111(g_tTex1df4a): 110(ptr) Variable UniformConstant
+ 112(g_tTex1df4): 110(ptr) Variable UniformConstant
+ 113: TypeImage 24(int) 1D sampled format:Unknown
+ 114: TypePointer UniformConstant 113
+ 115(g_tTex1di4): 114(ptr) Variable UniformConstant
+ 116: TypeImage 41(int) 1D sampled format:Unknown
+ 117: TypePointer UniformConstant 116
+ 118(g_tTex1du4): 117(ptr) Variable UniformConstant
+ 119: TypeImage 6(float) 3D sampled format:Unknown
+ 120: TypePointer UniformConstant 119
+ 121(g_tTex3df4): 120(ptr) Variable UniformConstant
+ 122: TypeImage 24(int) 3D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex3di4): 123(ptr) Variable UniformConstant
+ 125: TypeImage 41(int) 3D sampled format:Unknown
+ 126: TypePointer UniformConstant 125
+ 127(g_tTex3du4): 126(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
@@ -394,6 +430,11 @@
Store 95 94
98: 97(ptr) AccessChain 92(psout) 96
Store 98 93
- 99:90(PS_OUTPUT) Load 92(psout)
- ReturnValue 99
+ 101: 8(ptr) AccessChain 92(psout) 25
+ 102: 7(fvec4) Load 101
+ Store 100(Color) 102
+ 105: 97(ptr) AccessChain 92(psout) 96
+ 106: 6(float) Load 105
+ Store 104(Depth) 106
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index 667c39f..1f01fc3 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -1,7 +1,7 @@
hlsl.gather.basic.dx10.vert
Shader version: 450
0:? Sequence
-0:47 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -68,8 +68,8 @@
0:? 0.800000
0:? 0.900000
0:43 move second child to first child (temp 4-component vector of float)
-0:43 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:43 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:43 Pos: direct index for structure (temp 4-component vector of float)
+0:43 'vsout' (temp structure{temp 4-component vector of float Pos})
0:43 Constant:
0:43 0 (const int)
0:? Constant:
@@ -77,8 +77,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:45 Branch: Return with expression
-0:45 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:45 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:45 Pos: direct index for structure (temp 4-component vector of float)
+0:45 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -95,6 +102,7 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
Linked vertex stage:
@@ -102,7 +110,7 @@
Shader version: 450
0:? Sequence
-0:47 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -169,8 +177,8 @@
0:? 0.800000
0:? 0.900000
0:43 move second child to first child (temp 4-component vector of float)
-0:43 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:43 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:43 Pos: direct index for structure (temp 4-component vector of float)
+0:43 'vsout' (temp structure{temp 4-component vector of float Pos})
0:43 Constant:
0:43 0 (const int)
0:? Constant:
@@ -178,8 +186,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:45 Branch: Return with expression
-0:45 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:45 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:45 Pos: direct index for structure (temp 4-component vector of float)
+0:45 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:45 Constant:
+0:45 0 (const int)
+0:45 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -196,17 +211,17 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 118
+// Id's are bound by 121
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
- Source HLSL 450
+ EntryPoint Vertex 4 "main" 97
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
@@ -224,14 +239,15 @@
Name 90 "VS_OUTPUT"
MemberName 90(VS_OUTPUT) 0 "Pos"
Name 92 "vsout"
- Name 98 "g_sSamp2d"
- Name 101 "g_tTex1df4a"
- Name 102 "g_tTex1df4"
- Name 105 "g_tTex1di4"
- Name 108 "g_tTex1du4"
- Name 111 "g_tTex3df4"
- Name 114 "g_tTex3di4"
- Name 117 "g_tTex3du4"
+ Name 97 "Pos"
+ Name 101 "g_sSamp2d"
+ Name 104 "g_tTex1df4a"
+ Name 105 "g_tTex1df4"
+ Name 108 "g_tTex1di4"
+ Name 111 "g_tTex1du4"
+ Name 114 "g_tTex3df4"
+ Name 117 "g_tTex3di4"
+ Name 120 "g_tTex3du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
@@ -240,17 +256,17 @@
Decorate 59(g_tTexcdf4) DescriptorSet 0
Decorate 70(g_tTexcdi4) DescriptorSet 0
Decorate 80(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 90(VS_OUTPUT) 0 BuiltIn FragCoord
- Decorate 98(g_sSamp2d) DescriptorSet 0
- Decorate 101(g_tTex1df4a) DescriptorSet 0
- Decorate 101(g_tTex1df4a) Binding 1
- Decorate 102(g_tTex1df4) DescriptorSet 0
- Decorate 102(g_tTex1df4) Binding 0
- Decorate 105(g_tTex1di4) DescriptorSet 0
- Decorate 108(g_tTex1du4) DescriptorSet 0
- Decorate 111(g_tTex3df4) DescriptorSet 0
- Decorate 114(g_tTex3di4) DescriptorSet 0
- Decorate 117(g_tTex3du4) DescriptorSet 0
+ Decorate 97(Pos) BuiltIn Position
+ Decorate 101(g_sSamp2d) DescriptorSet 0
+ Decorate 104(g_tTex1df4a) DescriptorSet 0
+ Decorate 104(g_tTex1df4a) Binding 1
+ Decorate 105(g_tTex1df4) DescriptorSet 0
+ Decorate 105(g_tTex1df4) Binding 0
+ Decorate 108(g_tTex1di4) DescriptorSet 0
+ Decorate 111(g_tTex1du4) DescriptorSet 0
+ Decorate 114(g_tTex3df4) DescriptorSet 0
+ Decorate 117(g_tTex3di4) DescriptorSet 0
+ Decorate 120(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -311,26 +327,28 @@
91: TypePointer Function 90(VS_OUTPUT)
93: 6(float) Constant 0
94: 7(fvec4) ConstantComposite 93 93 93 93
- 98(g_sSamp2d): 15(ptr) Variable UniformConstant
- 99: TypeImage 6(float) 1D sampled format:Unknown
- 100: TypePointer UniformConstant 99
-101(g_tTex1df4a): 100(ptr) Variable UniformConstant
- 102(g_tTex1df4): 100(ptr) Variable UniformConstant
- 103: TypeImage 24(int) 1D sampled format:Unknown
- 104: TypePointer UniformConstant 103
- 105(g_tTex1di4): 104(ptr) Variable UniformConstant
- 106: TypeImage 41(int) 1D sampled format:Unknown
+ 96: TypePointer Output 7(fvec4)
+ 97(Pos): 96(ptr) Variable Output
+ 101(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 102: TypeImage 6(float) 1D sampled format:Unknown
+ 103: TypePointer UniformConstant 102
+104(g_tTex1df4a): 103(ptr) Variable UniformConstant
+ 105(g_tTex1df4): 103(ptr) Variable UniformConstant
+ 106: TypeImage 24(int) 1D sampled format:Unknown
107: TypePointer UniformConstant 106
- 108(g_tTex1du4): 107(ptr) Variable UniformConstant
- 109: TypeImage 6(float) 3D sampled format:Unknown
+ 108(g_tTex1di4): 107(ptr) Variable UniformConstant
+ 109: TypeImage 41(int) 1D sampled format:Unknown
110: TypePointer UniformConstant 109
- 111(g_tTex3df4): 110(ptr) Variable UniformConstant
- 112: TypeImage 24(int) 3D sampled format:Unknown
+ 111(g_tTex1du4): 110(ptr) Variable UniformConstant
+ 112: TypeImage 6(float) 3D sampled format:Unknown
113: TypePointer UniformConstant 112
- 114(g_tTex3di4): 113(ptr) Variable UniformConstant
- 115: TypeImage 41(int) 3D sampled format:Unknown
+ 114(g_tTex3df4): 113(ptr) Variable UniformConstant
+ 115: TypeImage 24(int) 3D sampled format:Unknown
116: TypePointer UniformConstant 115
- 117(g_tTex3du4): 116(ptr) Variable UniformConstant
+ 117(g_tTex3di4): 116(ptr) Variable UniformConstant
+ 118: TypeImage 41(int) 3D sampled format:Unknown
+ 119: TypePointer UniformConstant 118
+ 120(g_tTex3du4): 119(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
@@ -372,6 +390,8 @@
Store 77(txval42) 89
95: 8(ptr) AccessChain 92(vsout) 25
Store 95 94
- 96:90(VS_OUTPUT) Load 92(vsout)
- ReturnValue 96
+ 98: 8(ptr) AccessChain 92(vsout) 25
+ 99: 7(fvec4) Load 98
+ Store 97(Pos) 99
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index d5a3921..ac31791 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -46,7 +46,7 @@
0:? -1 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -55,14 +55,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -78,6 +91,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -86,7 +101,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:45 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -130,7 +145,7 @@
0:? -1 (const int)
0:40 move second child to first child (temp 4-component vector of float)
0:40 Color: direct index for structure (temp 4-component vector of float)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 0 (const int)
0:40 Constant:
@@ -139,14 +154,27 @@
0:40 1.000000
0:40 1.000000
0:41 move second child to first child (temp float)
-0:41 Depth: direct index for structure (temp float FragDepth)
-0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:41 Depth: direct index for structure (temp float)
+0:41 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:41 Constant:
0:41 1 (const int)
0:41 Constant:
0:41 1.000000
-0:43 Branch: Return with expression
-0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:43 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:43 Color: direct index for structure (temp 4-component vector of float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 0 (const int)
+0:43 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:43 Depth: direct index for structure (temp float)
+0:43 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:43 Constant:
+0:43 1 (const int)
+0:43 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -162,18 +190,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 100
+// Id's are bound by 107
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 71 75
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
@@ -186,34 +215,37 @@
MemberName 62(PS_OUTPUT) 0 "Color"
MemberName 62(PS_OUTPUT) 1 "Depth"
Name 64 "psout"
- Name 74 "g_tTex1df4a"
- Name 75 "g_tTex1df4"
- Name 78 "g_tTex1di4"
- Name 81 "g_tTex1du4"
- Name 84 "g_tTex3df4"
- Name 87 "g_tTex3di4"
- Name 90 "g_tTex3du4"
- Name 93 "g_tTexcdf4"
- Name 96 "g_tTexcdi4"
- Name 99 "g_tTexcdu4"
+ Name 71 "Color"
+ Name 75 "Depth"
+ Name 81 "g_tTex1df4a"
+ Name 82 "g_tTex1df4"
+ Name 85 "g_tTex1di4"
+ Name 88 "g_tTex1du4"
+ Name 91 "g_tTex3df4"
+ Name 94 "g_tTex3di4"
+ Name 97 "g_tTex3du4"
+ Name 100 "g_tTexcdf4"
+ Name 103 "g_tTexcdi4"
+ Name 106 "g_tTexcdu4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
Decorate 35(g_tTex2di4) DescriptorSet 0
Decorate 51(g_tTex2du4) DescriptorSet 0
- MemberDecorate 62(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 74(g_tTex1df4a) DescriptorSet 0
- Decorate 74(g_tTex1df4a) Binding 1
- Decorate 75(g_tTex1df4) DescriptorSet 0
- Decorate 75(g_tTex1df4) Binding 0
- Decorate 78(g_tTex1di4) DescriptorSet 0
- Decorate 81(g_tTex1du4) DescriptorSet 0
- Decorate 84(g_tTex3df4) DescriptorSet 0
- Decorate 87(g_tTex3di4) DescriptorSet 0
- Decorate 90(g_tTex3du4) DescriptorSet 0
- Decorate 93(g_tTexcdf4) DescriptorSet 0
- Decorate 96(g_tTexcdi4) DescriptorSet 0
- Decorate 99(g_tTexcdu4) DescriptorSet 0
+ Decorate 71(Color) Location 0
+ Decorate 75(Depth) BuiltIn FragDepth
+ Decorate 81(g_tTex1df4a) DescriptorSet 0
+ Decorate 81(g_tTex1df4a) Binding 1
+ Decorate 82(g_tTex1df4) DescriptorSet 0
+ Decorate 82(g_tTex1df4) Binding 0
+ Decorate 85(g_tTex1di4) DescriptorSet 0
+ Decorate 88(g_tTex1du4) DescriptorSet 0
+ Decorate 91(g_tTex3df4) DescriptorSet 0
+ Decorate 94(g_tTex3di4) DescriptorSet 0
+ Decorate 97(g_tTex3du4) DescriptorSet 0
+ Decorate 100(g_tTexcdf4) DescriptorSet 0
+ Decorate 103(g_tTexcdi4) DescriptorSet 0
+ Decorate 106(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -262,34 +294,38 @@
65: 6(float) Constant 1065353216
66: 7(fvec4) ConstantComposite 65 65 65 65
68: TypePointer Function 6(float)
- 72: TypeImage 6(float) 1D sampled format:Unknown
- 73: TypePointer UniformConstant 72
- 74(g_tTex1df4a): 73(ptr) Variable UniformConstant
- 75(g_tTex1df4): 73(ptr) Variable UniformConstant
- 76: TypeImage 24(int) 1D sampled format:Unknown
- 77: TypePointer UniformConstant 76
- 78(g_tTex1di4): 77(ptr) Variable UniformConstant
- 79: TypeImage 45(int) 1D sampled format:Unknown
+ 70: TypePointer Output 7(fvec4)
+ 71(Color): 70(ptr) Variable Output
+ 74: TypePointer Output 6(float)
+ 75(Depth): 74(ptr) Variable Output
+ 79: TypeImage 6(float) 1D sampled format:Unknown
80: TypePointer UniformConstant 79
- 81(g_tTex1du4): 80(ptr) Variable UniformConstant
- 82: TypeImage 6(float) 3D sampled format:Unknown
- 83: TypePointer UniformConstant 82
- 84(g_tTex3df4): 83(ptr) Variable UniformConstant
- 85: TypeImage 24(int) 3D sampled format:Unknown
- 86: TypePointer UniformConstant 85
- 87(g_tTex3di4): 86(ptr) Variable UniformConstant
- 88: TypeImage 45(int) 3D sampled format:Unknown
- 89: TypePointer UniformConstant 88
- 90(g_tTex3du4): 89(ptr) Variable UniformConstant
- 91: TypeImage 6(float) Cube sampled format:Unknown
- 92: TypePointer UniformConstant 91
- 93(g_tTexcdf4): 92(ptr) Variable UniformConstant
- 94: TypeImage 24(int) Cube sampled format:Unknown
- 95: TypePointer UniformConstant 94
- 96(g_tTexcdi4): 95(ptr) Variable UniformConstant
- 97: TypeImage 45(int) Cube sampled format:Unknown
- 98: TypePointer UniformConstant 97
- 99(g_tTexcdu4): 98(ptr) Variable UniformConstant
+ 81(g_tTex1df4a): 80(ptr) Variable UniformConstant
+ 82(g_tTex1df4): 80(ptr) Variable UniformConstant
+ 83: TypeImage 24(int) 1D sampled format:Unknown
+ 84: TypePointer UniformConstant 83
+ 85(g_tTex1di4): 84(ptr) Variable UniformConstant
+ 86: TypeImage 45(int) 1D sampled format:Unknown
+ 87: TypePointer UniformConstant 86
+ 88(g_tTex1du4): 87(ptr) Variable UniformConstant
+ 89: TypeImage 6(float) 3D sampled format:Unknown
+ 90: TypePointer UniformConstant 89
+ 91(g_tTex3df4): 90(ptr) Variable UniformConstant
+ 92: TypeImage 24(int) 3D sampled format:Unknown
+ 93: TypePointer UniformConstant 92
+ 94(g_tTex3di4): 93(ptr) Variable UniformConstant
+ 95: TypeImage 45(int) 3D sampled format:Unknown
+ 96: TypePointer UniformConstant 95
+ 97(g_tTex3du4): 96(ptr) Variable UniformConstant
+ 98: TypeImage 6(float) Cube sampled format:Unknown
+ 99: TypePointer UniformConstant 98
+ 100(g_tTexcdf4): 99(ptr) Variable UniformConstant
+ 101: TypeImage 24(int) Cube sampled format:Unknown
+ 102: TypePointer UniformConstant 101
+ 103(g_tTexcdi4): 102(ptr) Variable UniformConstant
+ 104: TypeImage 45(int) Cube sampled format:Unknown
+ 105: TypePointer UniformConstant 104
+ 106(g_tTexcdu4): 105(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
@@ -315,6 +351,11 @@
Store 67 66
69: 68(ptr) AccessChain 64(psout) 26
Store 69 65
- 70:62(PS_OUTPUT) Load 64(psout)
- ReturnValue 70
+ 72: 8(ptr) AccessChain 64(psout) 27
+ 73: 7(fvec4) Load 72
+ Store 71(Color) 73
+ 76: 68(ptr) AccessChain 64(psout) 26
+ 77: 6(float) Load 76
+ Store 75(Depth) 77
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index a1f628a..bf8f382 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:37 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:25 Sequence
@@ -49,7 +49,7 @@
0:? -1 (const int)
0:32 move second child to first child (temp 4-component vector of float)
0:32 Color: direct index for structure (temp 4-component vector of float)
-0:32 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:32 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
@@ -58,14 +58,27 @@
0:32 1.000000
0:32 1.000000
0:33 move second child to first child (temp float)
-0:33 Depth: direct index for structure (temp float FragDepth)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Depth: direct index for structure (temp float)
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1.000000
-0:35 Branch: Return with expression
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:35 Color: direct index for structure (temp 4-component vector of float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35 Constant:
+0:35 0 (const int)
+0:35 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:35 Depth: direct index for structure (temp float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35 Constant:
+0:35 1 (const int)
+0:35 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -75,6 +88,8 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -83,7 +98,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:37 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:25 Sequence
@@ -130,7 +145,7 @@
0:? -1 (const int)
0:32 move second child to first child (temp 4-component vector of float)
0:32 Color: direct index for structure (temp 4-component vector of float)
-0:32 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:32 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:32 Constant:
0:32 0 (const int)
0:32 Constant:
@@ -139,14 +154,27 @@
0:32 1.000000
0:32 1.000000
0:33 move second child to first child (temp float)
-0:33 Depth: direct index for structure (temp float FragDepth)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Depth: direct index for structure (temp float)
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 1 (const int)
0:33 Constant:
0:33 1.000000
-0:35 Branch: Return with expression
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:35 Color: direct index for structure (temp 4-component vector of float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35 Constant:
+0:35 0 (const int)
+0:35 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:35 Depth: direct index for structure (temp float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35 Constant:
+0:35 1 (const int)
+0:35 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -156,18 +184,19 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 83
+// Id's are bound by 90
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 72 76
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval20"
Name 12 "g_tTex2df4"
@@ -180,22 +209,25 @@
MemberName 63(PS_OUTPUT) 0 "Color"
MemberName 63(PS_OUTPUT) 1 "Depth"
Name 65 "psout"
- Name 75 "g_tTex1df4a"
- Name 76 "g_tTex1df4"
- Name 79 "g_tTex1di4"
- Name 82 "g_tTex1du4"
+ Name 72 "Color"
+ Name 76 "Depth"
+ Name 82 "g_tTex1df4a"
+ Name 83 "g_tTex1df4"
+ Name 86 "g_tTex1di4"
+ Name 89 "g_tTex1du4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
Decorate 36(g_tTex2di4) DescriptorSet 0
Decorate 51(g_tTex2du4) DescriptorSet 0
- MemberDecorate 63(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 75(g_tTex1df4a) DescriptorSet 0
- Decorate 75(g_tTex1df4a) Binding 1
- Decorate 76(g_tTex1df4) DescriptorSet 0
- Decorate 76(g_tTex1df4) Binding 0
- Decorate 79(g_tTex1di4) DescriptorSet 0
- Decorate 82(g_tTex1du4) DescriptorSet 0
+ Decorate 72(Color) Location 0
+ Decorate 76(Depth) BuiltIn FragDepth
+ Decorate 82(g_tTex1df4a) DescriptorSet 0
+ Decorate 82(g_tTex1df4a) Binding 1
+ Decorate 83(g_tTex1df4) DescriptorSet 0
+ Decorate 83(g_tTex1df4) Binding 0
+ Decorate 86(g_tTex1di4) DescriptorSet 0
+ Decorate 89(g_tTex1du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -245,16 +277,20 @@
66: 6(float) Constant 1065353216
67: 7(fvec4) ConstantComposite 66 66 66 66
69: TypePointer Function 6(float)
- 73: TypeImage 6(float) 1D array sampled format:Unknown
- 74: TypePointer UniformConstant 73
- 75(g_tTex1df4a): 74(ptr) Variable UniformConstant
- 76(g_tTex1df4): 74(ptr) Variable UniformConstant
- 77: TypeImage 25(int) 1D array sampled format:Unknown
- 78: TypePointer UniformConstant 77
- 79(g_tTex1di4): 78(ptr) Variable UniformConstant
- 80: TypeImage 45(int) 1D array sampled format:Unknown
+ 71: TypePointer Output 7(fvec4)
+ 72(Color): 71(ptr) Variable Output
+ 75: TypePointer Output 6(float)
+ 76(Depth): 75(ptr) Variable Output
+ 80: TypeImage 6(float) 1D array sampled format:Unknown
81: TypePointer UniformConstant 80
- 82(g_tTex1du4): 81(ptr) Variable UniformConstant
+ 82(g_tTex1df4a): 81(ptr) Variable UniformConstant
+ 83(g_tTex1df4): 81(ptr) Variable UniformConstant
+ 84: TypeImage 25(int) 1D array sampled format:Unknown
+ 85: TypePointer UniformConstant 84
+ 86(g_tTex1di4): 85(ptr) Variable UniformConstant
+ 87: TypeImage 45(int) 1D array sampled format:Unknown
+ 88: TypePointer UniformConstant 87
+ 89(g_tTex1du4): 88(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval20): 8(ptr) Variable Function
@@ -280,6 +316,11 @@
Store 68 67
70: 69(ptr) AccessChain 65(psout) 27
Store 70 66
- 71:63(PS_OUTPUT) Load 65(psout)
- ReturnValue 71
+ 73: 8(ptr) AccessChain 65(psout) 28
+ 74: 7(fvec4) Load 73
+ Store 72(Color) 74
+ 77: 69(ptr) AccessChain 65(psout) 27
+ 78: 6(float) Load 77
+ Store 76(Depth) 78
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index cad56b6..026fd1b 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -247,7 +247,7 @@
0:65 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
0:67 Color: direct index for structure (temp 4-component vector of float)
-0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67 Constant:
0:67 0 (const int)
0:67 Constant:
@@ -256,14 +256,27 @@
0:67 1.000000
0:67 1.000000
0:68 move second child to first child (temp float)
-0:68 Depth: direct index for structure (temp float FragDepth)
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 1.000000
-0:70 Branch: Return with expression
-0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:70 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:70 Color: direct index for structure (temp 4-component vector of float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 0 (const int)
+0:70 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:70 Depth: direct index for structure (temp float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 1 (const int)
+0:70 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -280,6 +293,8 @@
0:? 'c2' (uniform 2-component vector of float)
0:? 'c3' (uniform 3-component vector of float)
0:? 'c4' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -288,7 +303,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:33 Sequence
@@ -533,7 +548,7 @@
0:65 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
0:67 Color: direct index for structure (temp 4-component vector of float)
-0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67 Constant:
0:67 0 (const int)
0:67 Constant:
@@ -542,14 +557,27 @@
0:67 1.000000
0:67 1.000000
0:68 move second child to first child (temp float)
-0:68 Depth: direct index for structure (temp float FragDepth)
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 1.000000
-0:70 Branch: Return with expression
-0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:70 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:70 Color: direct index for structure (temp 4-component vector of float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 0 (const int)
+0:70 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:70 Depth: direct index for structure (temp float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 1 (const int)
+0:70 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -566,19 +594,20 @@
0:? 'c2' (uniform 2-component vector of float)
0:? 'c3' (uniform 3-component vector of float)
0:? 'c4' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 220
+// Id's are bound by 227
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 204 208
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval00"
Name 12 "g_tTex2df4a"
@@ -617,12 +646,14 @@
MemberName 195(PS_OUTPUT) 0 "Color"
MemberName 195(PS_OUTPUT) 1 "Depth"
Name 197 "psout"
- Name 205 "g_sSamp2d"
- Name 208 "g_tTex1df4a"
- Name 211 "g_tTex1di4a"
- Name 214 "g_tTex1du4a"
- Name 216 "c1"
- Name 219 "c2"
+ Name 204 "Color"
+ Name 208 "Depth"
+ Name 212 "g_sSamp2d"
+ Name 215 "g_tTex1df4a"
+ Name 218 "g_tTex1di4a"
+ Name 221 "g_tTex1du4a"
+ Name 223 "c1"
+ Name 226 "c2"
Decorate 12(g_tTex2df4a) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
@@ -631,12 +662,13 @@
Decorate 112(g_tTexcdf4a) DescriptorSet 0
Decorate 124(g_tTexcdi4a) DescriptorSet 0
Decorate 134(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 195(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 205(g_sSamp2d) DescriptorSet 0
- Decorate 208(g_tTex1df4a) DescriptorSet 0
- Decorate 208(g_tTex1df4a) Binding 0
- Decorate 211(g_tTex1di4a) DescriptorSet 0
- Decorate 214(g_tTex1du4a) DescriptorSet 0
+ Decorate 204(Color) Location 0
+ Decorate 208(Depth) BuiltIn FragDepth
+ Decorate 212(g_sSamp2d) DescriptorSet 0
+ Decorate 215(g_tTex1df4a) DescriptorSet 0
+ Decorate 215(g_tTex1df4a) Binding 0
+ Decorate 218(g_tTex1di4a) DescriptorSet 0
+ Decorate 221(g_tTex1du4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -689,21 +721,25 @@
198: 6(float) Constant 1065353216
199: 7(fvec4) ConstantComposite 198 198 198 198
201: TypePointer Function 6(float)
- 205(g_sSamp2d): 15(ptr) Variable UniformConstant
- 206: TypeImage 6(float) 1D array sampled format:Unknown
- 207: TypePointer UniformConstant 206
-208(g_tTex1df4a): 207(ptr) Variable UniformConstant
- 209: TypeImage 24(int) 1D array sampled format:Unknown
- 210: TypePointer UniformConstant 209
-211(g_tTex1di4a): 210(ptr) Variable UniformConstant
- 212: TypeImage 39(int) 1D array sampled format:Unknown
- 213: TypePointer UniformConstant 212
-214(g_tTex1du4a): 213(ptr) Variable UniformConstant
- 215: TypePointer UniformConstant 6(float)
- 216(c1): 215(ptr) Variable UniformConstant
- 217: TypeVector 6(float) 2
- 218: TypePointer UniformConstant 217(fvec2)
- 219(c2): 218(ptr) Variable UniformConstant
+ 203: TypePointer Output 7(fvec4)
+ 204(Color): 203(ptr) Variable Output
+ 207: TypePointer Output 6(float)
+ 208(Depth): 207(ptr) Variable Output
+ 212(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 213: TypeImage 6(float) 1D array sampled format:Unknown
+ 214: TypePointer UniformConstant 213
+215(g_tTex1df4a): 214(ptr) Variable UniformConstant
+ 216: TypeImage 24(int) 1D array sampled format:Unknown
+ 217: TypePointer UniformConstant 216
+218(g_tTex1di4a): 217(ptr) Variable UniformConstant
+ 219: TypeImage 39(int) 1D array sampled format:Unknown
+ 220: TypePointer UniformConstant 219
+221(g_tTex1du4a): 220(ptr) Variable UniformConstant
+ 222: TypePointer UniformConstant 6(float)
+ 223(c1): 222(ptr) Variable UniformConstant
+ 224: TypeVector 6(float) 2
+ 225: TypePointer UniformConstant 224(fvec2)
+ 226(c2): 225(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval00): 8(ptr) Variable Function
@@ -879,6 +915,11 @@
Store 200 199
202: 201(ptr) AccessChain 197(psout) 57
Store 202 198
- 203:195(PS_OUTPUT) Load 197(psout)
- ReturnValue 203
+ 205: 8(ptr) AccessChain 197(psout) 25
+ 206: 7(fvec4) Load 205
+ Store 204(Color) 206
+ 209: 201(ptr) AccessChain 197(psout) 57
+ 210: 6(float) Load 209
+ Store 208(Depth) 210
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 8fd9691..2ec5343 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:78 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:34 Function Parameters:
0:? Sequence
0:39 Sequence
@@ -247,7 +247,7 @@
0:71 3 (const int)
0:73 move second child to first child (temp 4-component vector of float)
0:73 Color: direct index for structure (temp 4-component vector of float)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 0 (const int)
0:73 Constant:
@@ -256,14 +256,27 @@
0:73 1.000000
0:73 1.000000
0:74 move second child to first child (temp float)
-0:74 Depth: direct index for structure (temp float FragDepth)
-0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:74 Depth: direct index for structure (temp float)
+0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:74 Constant:
0:74 1 (const int)
0:74 Constant:
0:74 1.000000
-0:76 Branch: Return with expression
-0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:76 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:76 Color: direct index for structure (temp 4-component vector of float)
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:76 Constant:
+0:76 0 (const int)
+0:76 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:76 Depth: direct index for structure (temp float)
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:76 Constant:
+0:76 1 (const int)
+0:76 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -284,6 +297,8 @@
0:? 'c2' (uniform 2-component vector of float)
0:? 'c3' (uniform 3-component vector of float)
0:? 'c4' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -292,7 +307,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:78 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:34 Function Parameters:
0:? Sequence
0:39 Sequence
@@ -537,7 +552,7 @@
0:71 3 (const int)
0:73 move second child to first child (temp 4-component vector of float)
0:73 Color: direct index for structure (temp 4-component vector of float)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 0 (const int)
0:73 Constant:
@@ -546,14 +561,27 @@
0:73 1.000000
0:73 1.000000
0:74 move second child to first child (temp float)
-0:74 Depth: direct index for structure (temp float FragDepth)
-0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:74 Depth: direct index for structure (temp float)
+0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:74 Constant:
0:74 1 (const int)
0:74 Constant:
0:74 1.000000
-0:76 Branch: Return with expression
-0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:76 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:76 Color: direct index for structure (temp 4-component vector of float)
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:76 Constant:
+0:76 0 (const int)
+0:76 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:76 Depth: direct index for structure (temp float)
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:76 Constant:
+0:76 1 (const int)
+0:76 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -574,18 +602,19 @@
0:? 'c2' (uniform 2-component vector of float)
0:? 'c3' (uniform 3-component vector of float)
0:? 'c4' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 230
+// Id's are bound by 237
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 205 209
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval00"
Name 12 "g_tTex2df4"
@@ -624,16 +653,18 @@
MemberName 196(PS_OUTPUT) 0 "Color"
MemberName 196(PS_OUTPUT) 1 "Depth"
Name 198 "psout"
- Name 206 "g_sSamp2d"
- Name 209 "g_tTex1df4a"
- Name 210 "g_tTex1df4"
- Name 213 "g_tTex1di4"
- Name 216 "g_tTex1du4"
- Name 219 "g_tTex3df4"
- Name 222 "g_tTex3di4"
- Name 225 "g_tTex3du4"
- Name 227 "c1"
- Name 229 "c4"
+ Name 205 "Color"
+ Name 209 "Depth"
+ Name 213 "g_sSamp2d"
+ Name 216 "g_tTex1df4a"
+ Name 217 "g_tTex1df4"
+ Name 220 "g_tTex1di4"
+ Name 223 "g_tTex1du4"
+ Name 226 "g_tTex3df4"
+ Name 229 "g_tTex3di4"
+ Name 232 "g_tTex3du4"
+ Name 234 "c1"
+ Name 236 "c4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
@@ -642,17 +673,18 @@
Decorate 112(g_tTexcdf4) DescriptorSet 0
Decorate 125(g_tTexcdi4) DescriptorSet 0
Decorate 135(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 196(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 206(g_sSamp2d) DescriptorSet 0
- Decorate 209(g_tTex1df4a) DescriptorSet 0
- Decorate 209(g_tTex1df4a) Binding 1
- Decorate 210(g_tTex1df4) DescriptorSet 0
- Decorate 210(g_tTex1df4) Binding 0
- Decorate 213(g_tTex1di4) DescriptorSet 0
- Decorate 216(g_tTex1du4) DescriptorSet 0
- Decorate 219(g_tTex3df4) DescriptorSet 0
- Decorate 222(g_tTex3di4) DescriptorSet 0
- Decorate 225(g_tTex3du4) DescriptorSet 0
+ Decorate 205(Color) Location 0
+ Decorate 209(Depth) BuiltIn FragDepth
+ Decorate 213(g_sSamp2d) DescriptorSet 0
+ Decorate 216(g_tTex1df4a) DescriptorSet 0
+ Decorate 216(g_tTex1df4a) Binding 1
+ Decorate 217(g_tTex1df4) DescriptorSet 0
+ Decorate 217(g_tTex1df4) Binding 0
+ Decorate 220(g_tTex1di4) DescriptorSet 0
+ Decorate 223(g_tTex1du4) DescriptorSet 0
+ Decorate 226(g_tTex3df4) DescriptorSet 0
+ Decorate 229(g_tTex3di4) DescriptorSet 0
+ Decorate 232(g_tTex3du4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -706,30 +738,34 @@
199: 6(float) Constant 1065353216
200: 7(fvec4) ConstantComposite 199 199 199 199
202: TypePointer Function 6(float)
- 206(g_sSamp2d): 15(ptr) Variable UniformConstant
- 207: TypeImage 6(float) 1D sampled format:Unknown
- 208: TypePointer UniformConstant 207
-209(g_tTex1df4a): 208(ptr) Variable UniformConstant
- 210(g_tTex1df4): 208(ptr) Variable UniformConstant
- 211: TypeImage 24(int) 1D sampled format:Unknown
- 212: TypePointer UniformConstant 211
- 213(g_tTex1di4): 212(ptr) Variable UniformConstant
- 214: TypeImage 39(int) 1D sampled format:Unknown
+ 204: TypePointer Output 7(fvec4)
+ 205(Color): 204(ptr) Variable Output
+ 208: TypePointer Output 6(float)
+ 209(Depth): 208(ptr) Variable Output
+ 213(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 214: TypeImage 6(float) 1D sampled format:Unknown
215: TypePointer UniformConstant 214
- 216(g_tTex1du4): 215(ptr) Variable UniformConstant
- 217: TypeImage 6(float) 3D sampled format:Unknown
- 218: TypePointer UniformConstant 217
- 219(g_tTex3df4): 218(ptr) Variable UniformConstant
- 220: TypeImage 24(int) 3D sampled format:Unknown
- 221: TypePointer UniformConstant 220
- 222(g_tTex3di4): 221(ptr) Variable UniformConstant
- 223: TypeImage 39(int) 3D sampled format:Unknown
- 224: TypePointer UniformConstant 223
- 225(g_tTex3du4): 224(ptr) Variable UniformConstant
- 226: TypePointer UniformConstant 6(float)
- 227(c1): 226(ptr) Variable UniformConstant
- 228: TypePointer UniformConstant 7(fvec4)
- 229(c4): 228(ptr) Variable UniformConstant
+216(g_tTex1df4a): 215(ptr) Variable UniformConstant
+ 217(g_tTex1df4): 215(ptr) Variable UniformConstant
+ 218: TypeImage 24(int) 1D sampled format:Unknown
+ 219: TypePointer UniformConstant 218
+ 220(g_tTex1di4): 219(ptr) Variable UniformConstant
+ 221: TypeImage 39(int) 1D sampled format:Unknown
+ 222: TypePointer UniformConstant 221
+ 223(g_tTex1du4): 222(ptr) Variable UniformConstant
+ 224: TypeImage 6(float) 3D sampled format:Unknown
+ 225: TypePointer UniformConstant 224
+ 226(g_tTex3df4): 225(ptr) Variable UniformConstant
+ 227: TypeImage 24(int) 3D sampled format:Unknown
+ 228: TypePointer UniformConstant 227
+ 229(g_tTex3di4): 228(ptr) Variable UniformConstant
+ 230: TypeImage 39(int) 3D sampled format:Unknown
+ 231: TypePointer UniformConstant 230
+ 232(g_tTex3du4): 231(ptr) Variable UniformConstant
+ 233: TypePointer UniformConstant 6(float)
+ 234(c1): 233(ptr) Variable UniformConstant
+ 235: TypePointer UniformConstant 7(fvec4)
+ 236(c4): 235(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval00): 8(ptr) Variable Function
@@ -905,6 +941,11 @@
Store 201 200
203: 202(ptr) AccessChain 198(psout) 57
Store 203 199
- 204:196(PS_OUTPUT) Load 198(psout)
- ReturnValue 204
+ 206: 8(ptr) AccessChain 198(psout) 25
+ 207: 7(fvec4) Load 206
+ Store 205(Color) 207
+ 210: 202(ptr) AccessChain 198(psout) 57
+ 211: 6(float) Load 210
+ Store 209(Depth) 211
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index ea0d94a..a869ba7 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:117 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:39 Function Parameters:
0:? Sequence
0:46 Sequence
@@ -319,7 +319,7 @@
0:100 3 (const int)
0:112 move second child to first child (temp 4-component vector of float)
0:112 Color: direct index for structure (temp 4-component vector of float)
-0:112 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:112 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:112 Constant:
0:112 0 (const int)
0:112 Constant:
@@ -328,14 +328,27 @@
0:112 1.000000
0:112 1.000000
0:113 move second child to first child (temp float)
-0:113 Depth: direct index for structure (temp float FragDepth)
-0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:113 Depth: direct index for structure (temp float)
+0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:113 Constant:
0:113 1 (const int)
0:113 Constant:
0:113 1.000000
-0:115 Branch: Return with expression
-0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:115 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:115 Color: direct index for structure (temp 4-component vector of float)
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:115 Constant:
+0:115 0 (const int)
+0:115 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:115 Depth: direct index for structure (temp float)
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:115 Constant:
+0:115 1 (const int)
+0:115 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -360,6 +373,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -368,7 +383,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:117 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:39 Function Parameters:
0:? Sequence
0:46 Sequence
@@ -685,7 +700,7 @@
0:100 3 (const int)
0:112 move second child to first child (temp 4-component vector of float)
0:112 Color: direct index for structure (temp 4-component vector of float)
-0:112 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:112 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:112 Constant:
0:112 0 (const int)
0:112 Constant:
@@ -694,14 +709,27 @@
0:112 1.000000
0:112 1.000000
0:113 move second child to first child (temp float)
-0:113 Depth: direct index for structure (temp float FragDepth)
-0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:113 Depth: direct index for structure (temp float)
+0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:113 Constant:
0:113 1 (const int)
0:113 Constant:
0:113 1.000000
-0:115 Branch: Return with expression
-0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:115 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:115 Color: direct index for structure (temp 4-component vector of float)
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:115 Constant:
+0:115 0 (const int)
+0:115 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:115 Depth: direct index for structure (temp float)
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:115 Constant:
+0:115 1 (const int)
+0:115 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -726,19 +754,20 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 311
+// Id's are bound by 318
Capability Shader
Capability ImageGatherExtended
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 267 271
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval001"
Name 12 "g_tTex2df4"
@@ -774,42 +803,45 @@
MemberName 258(PS_OUTPUT) 0 "Color"
MemberName 258(PS_OUTPUT) 1 "Depth"
Name 260 "psout"
- Name 268 "g_sSamp2d"
- Name 271 "g_tTex1df4a"
- Name 272 "g_tTex1df4"
- Name 275 "g_tTex1di4"
- Name 278 "g_tTex1du4"
- Name 281 "g_tTex3df4"
- Name 284 "g_tTex3di4"
- Name 287 "g_tTex3du4"
- Name 290 "g_tTexcdf4"
- Name 293 "g_tTexcdi4"
- Name 296 "g_tTexcdu4"
- Name 298 "c1"
- Name 301 "c3"
- Name 303 "c4"
- Name 305 "o1"
- Name 308 "o3"
- Name 310 "o4"
+ Name 267 "Color"
+ Name 271 "Depth"
+ Name 275 "g_sSamp2d"
+ Name 278 "g_tTex1df4a"
+ Name 279 "g_tTex1df4"
+ Name 282 "g_tTex1di4"
+ Name 285 "g_tTex1du4"
+ Name 288 "g_tTex3df4"
+ Name 291 "g_tTex3di4"
+ Name 294 "g_tTex3du4"
+ Name 297 "g_tTexcdf4"
+ Name 300 "g_tTexcdi4"
+ Name 303 "g_tTexcdu4"
+ Name 305 "c1"
+ Name 308 "c3"
+ Name 310 "c4"
+ Name 312 "o1"
+ Name 315 "o3"
+ Name 317 "o4"
Decorate 12(g_tTex2df4) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
Decorate 36(g_tTex2di4) DescriptorSet 0
Decorate 50(g_tTex2du4) DescriptorSet 0
- MemberDecorate 258(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 268(g_sSamp2d) DescriptorSet 0
- Decorate 271(g_tTex1df4a) DescriptorSet 0
- Decorate 271(g_tTex1df4a) Binding 1
- Decorate 272(g_tTex1df4) DescriptorSet 0
- Decorate 272(g_tTex1df4) Binding 0
- Decorate 275(g_tTex1di4) DescriptorSet 0
- Decorate 278(g_tTex1du4) DescriptorSet 0
- Decorate 281(g_tTex3df4) DescriptorSet 0
- Decorate 284(g_tTex3di4) DescriptorSet 0
- Decorate 287(g_tTex3du4) DescriptorSet 0
- Decorate 290(g_tTexcdf4) DescriptorSet 0
- Decorate 293(g_tTexcdi4) DescriptorSet 0
- Decorate 296(g_tTexcdu4) DescriptorSet 0
+ Decorate 267(Color) Location 0
+ Decorate 271(Depth) BuiltIn FragDepth
+ Decorate 275(g_sSamp2d) DescriptorSet 0
+ Decorate 278(g_tTex1df4a) DescriptorSet 0
+ Decorate 278(g_tTex1df4a) Binding 1
+ Decorate 279(g_tTex1df4) DescriptorSet 0
+ Decorate 279(g_tTex1df4) Binding 0
+ Decorate 282(g_tTex1di4) DescriptorSet 0
+ Decorate 285(g_tTex1du4) DescriptorSet 0
+ Decorate 288(g_tTex3df4) DescriptorSet 0
+ Decorate 291(g_tTex3di4) DescriptorSet 0
+ Decorate 294(g_tTex3du4) DescriptorSet 0
+ Decorate 297(g_tTexcdf4) DescriptorSet 0
+ Decorate 300(g_tTexcdi4) DescriptorSet 0
+ Decorate 303(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -853,49 +885,53 @@
261: 6(float) Constant 1065353216
262: 7(fvec4) ConstantComposite 261 261 261 261
264: TypePointer Function 6(float)
- 268(g_sSamp2d): 15(ptr) Variable UniformConstant
- 269: TypeImage 6(float) 1D sampled format:Unknown
- 270: TypePointer UniformConstant 269
-271(g_tTex1df4a): 270(ptr) Variable UniformConstant
- 272(g_tTex1df4): 270(ptr) Variable UniformConstant
- 273: TypeImage 24(int) 1D sampled format:Unknown
- 274: TypePointer UniformConstant 273
- 275(g_tTex1di4): 274(ptr) Variable UniformConstant
- 276: TypeImage 44(int) 1D sampled format:Unknown
+ 266: TypePointer Output 7(fvec4)
+ 267(Color): 266(ptr) Variable Output
+ 270: TypePointer Output 6(float)
+ 271(Depth): 270(ptr) Variable Output
+ 275(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 276: TypeImage 6(float) 1D sampled format:Unknown
277: TypePointer UniformConstant 276
- 278(g_tTex1du4): 277(ptr) Variable UniformConstant
- 279: TypeImage 6(float) 3D sampled format:Unknown
- 280: TypePointer UniformConstant 279
- 281(g_tTex3df4): 280(ptr) Variable UniformConstant
- 282: TypeImage 24(int) 3D sampled format:Unknown
- 283: TypePointer UniformConstant 282
- 284(g_tTex3di4): 283(ptr) Variable UniformConstant
- 285: TypeImage 44(int) 3D sampled format:Unknown
- 286: TypePointer UniformConstant 285
- 287(g_tTex3du4): 286(ptr) Variable UniformConstant
- 288: TypeImage 6(float) Cube sampled format:Unknown
- 289: TypePointer UniformConstant 288
- 290(g_tTexcdf4): 289(ptr) Variable UniformConstant
- 291: TypeImage 24(int) Cube sampled format:Unknown
- 292: TypePointer UniformConstant 291
- 293(g_tTexcdi4): 292(ptr) Variable UniformConstant
- 294: TypeImage 44(int) Cube sampled format:Unknown
- 295: TypePointer UniformConstant 294
- 296(g_tTexcdu4): 295(ptr) Variable UniformConstant
- 297: TypePointer UniformConstant 6(float)
- 298(c1): 297(ptr) Variable UniformConstant
- 299: TypeVector 6(float) 3
- 300: TypePointer UniformConstant 299(fvec3)
- 301(c3): 300(ptr) Variable UniformConstant
- 302: TypePointer UniformConstant 7(fvec4)
- 303(c4): 302(ptr) Variable UniformConstant
- 304: TypePointer UniformConstant 24(int)
- 305(o1): 304(ptr) Variable UniformConstant
- 306: TypeVector 24(int) 3
- 307: TypePointer UniformConstant 306(ivec3)
- 308(o3): 307(ptr) Variable UniformConstant
- 309: TypePointer UniformConstant 31(ivec4)
- 310(o4): 309(ptr) Variable UniformConstant
+278(g_tTex1df4a): 277(ptr) Variable UniformConstant
+ 279(g_tTex1df4): 277(ptr) Variable UniformConstant
+ 280: TypeImage 24(int) 1D sampled format:Unknown
+ 281: TypePointer UniformConstant 280
+ 282(g_tTex1di4): 281(ptr) Variable UniformConstant
+ 283: TypeImage 44(int) 1D sampled format:Unknown
+ 284: TypePointer UniformConstant 283
+ 285(g_tTex1du4): 284(ptr) Variable UniformConstant
+ 286: TypeImage 6(float) 3D sampled format:Unknown
+ 287: TypePointer UniformConstant 286
+ 288(g_tTex3df4): 287(ptr) Variable UniformConstant
+ 289: TypeImage 24(int) 3D sampled format:Unknown
+ 290: TypePointer UniformConstant 289
+ 291(g_tTex3di4): 290(ptr) Variable UniformConstant
+ 292: TypeImage 44(int) 3D sampled format:Unknown
+ 293: TypePointer UniformConstant 292
+ 294(g_tTex3du4): 293(ptr) Variable UniformConstant
+ 295: TypeImage 6(float) Cube sampled format:Unknown
+ 296: TypePointer UniformConstant 295
+ 297(g_tTexcdf4): 296(ptr) Variable UniformConstant
+ 298: TypeImage 24(int) Cube sampled format:Unknown
+ 299: TypePointer UniformConstant 298
+ 300(g_tTexcdi4): 299(ptr) Variable UniformConstant
+ 301: TypeImage 44(int) Cube sampled format:Unknown
+ 302: TypePointer UniformConstant 301
+ 303(g_tTexcdu4): 302(ptr) Variable UniformConstant
+ 304: TypePointer UniformConstant 6(float)
+ 305(c1): 304(ptr) Variable UniformConstant
+ 306: TypeVector 6(float) 3
+ 307: TypePointer UniformConstant 306(fvec3)
+ 308(c3): 307(ptr) Variable UniformConstant
+ 309: TypePointer UniformConstant 7(fvec4)
+ 310(c4): 309(ptr) Variable UniformConstant
+ 311: TypePointer UniformConstant 24(int)
+ 312(o1): 311(ptr) Variable UniformConstant
+ 313: TypeVector 24(int) 3
+ 314: TypePointer UniformConstant 313(ivec3)
+ 315(o3): 314(ptr) Variable UniformConstant
+ 316: TypePointer UniformConstant 31(ivec4)
+ 317(o4): 316(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval001): 8(ptr) Variable Function
@@ -1143,6 +1179,11 @@
Store 263 262
265: 264(ptr) AccessChain 260(psout) 99
Store 265 261
- 266:258(PS_OUTPUT) Load 260(psout)
- ReturnValue 266
+ 268: 8(ptr) AccessChain 260(psout) 29
+ 269: 7(fvec4) Load 268
+ Store 267(Color) 269
+ 272: 264(ptr) AccessChain 260(psout) 99
+ 273: 6(float) Load 272
+ Store 271(Depth) 273
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index f9c28d0..022f63e 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:111 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:33 Function Parameters:
0:? Sequence
0:40 Sequence
@@ -319,7 +319,7 @@
0:94 3 (const int)
0:106 move second child to first child (temp 4-component vector of float)
0:106 Color: direct index for structure (temp 4-component vector of float)
-0:106 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:106 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:106 Constant:
0:106 0 (const int)
0:106 Constant:
@@ -328,14 +328,27 @@
0:106 1.000000
0:106 1.000000
0:107 move second child to first child (temp float)
-0:107 Depth: direct index for structure (temp float FragDepth)
-0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:107 Depth: direct index for structure (temp float)
+0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:107 Constant:
0:107 1 (const int)
0:107 Constant:
0:107 1.000000
-0:109 Branch: Return with expression
-0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:109 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:109 Color: direct index for structure (temp 4-component vector of float)
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:109 Constant:
+0:109 0 (const int)
+0:109 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:109 Depth: direct index for structure (temp float)
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:109 Constant:
+0:109 1 (const int)
+0:109 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -356,6 +369,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -364,7 +379,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:111 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:33 Function Parameters:
0:? Sequence
0:40 Sequence
@@ -681,7 +696,7 @@
0:94 3 (const int)
0:106 move second child to first child (temp 4-component vector of float)
0:106 Color: direct index for structure (temp 4-component vector of float)
-0:106 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:106 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:106 Constant:
0:106 0 (const int)
0:106 Constant:
@@ -690,14 +705,27 @@
0:106 1.000000
0:106 1.000000
0:107 move second child to first child (temp float)
-0:107 Depth: direct index for structure (temp float FragDepth)
-0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:107 Depth: direct index for structure (temp float)
+0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:107 Constant:
0:107 1 (const int)
0:107 Constant:
0:107 1.000000
-0:109 Branch: Return with expression
-0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:109 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:109 Color: direct index for structure (temp 4-component vector of float)
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:109 Constant:
+0:109 0 (const int)
+0:109 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:109 Depth: direct index for structure (temp float)
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:109 Constant:
+0:109 1 (const int)
+0:109 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -718,10 +746,12 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 301
+// Id's are bound by 308
Capability Shader
Capability ImageGatherExtended
@@ -729,9 +759,8 @@
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 267 271
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval001"
Name 12 "g_tTex2df4a"
@@ -767,33 +796,36 @@
MemberName 258(PS_OUTPUT) 0 "Color"
MemberName 258(PS_OUTPUT) 1 "Depth"
Name 260 "psout"
- Name 268 "g_sSamp2d"
- Name 271 "g_tTex1df4a"
- Name 274 "g_tTex1di4a"
- Name 277 "g_tTex1du4a"
- Name 280 "g_tTexcdf4a"
- Name 283 "g_tTexcdi4a"
- Name 286 "g_tTexcdu4a"
- Name 288 "c1"
- Name 291 "c2"
- Name 293 "c4"
- Name 295 "o1"
- Name 298 "o3"
- Name 300 "o4"
+ Name 267 "Color"
+ Name 271 "Depth"
+ Name 275 "g_sSamp2d"
+ Name 278 "g_tTex1df4a"
+ Name 281 "g_tTex1di4a"
+ Name 284 "g_tTex1du4a"
+ Name 287 "g_tTexcdf4a"
+ Name 290 "g_tTexcdi4a"
+ Name 293 "g_tTexcdu4a"
+ Name 295 "c1"
+ Name 298 "c2"
+ Name 300 "c4"
+ Name 302 "o1"
+ Name 305 "o3"
+ Name 307 "o4"
Decorate 12(g_tTex2df4a) DescriptorSet 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
Decorate 36(g_tTex2di4a) DescriptorSet 0
Decorate 50(g_tTex2du4a) DescriptorSet 0
- MemberDecorate 258(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 268(g_sSamp2d) DescriptorSet 0
- Decorate 271(g_tTex1df4a) DescriptorSet 0
- Decorate 271(g_tTex1df4a) Binding 0
- Decorate 274(g_tTex1di4a) DescriptorSet 0
- Decorate 277(g_tTex1du4a) DescriptorSet 0
- Decorate 280(g_tTexcdf4a) DescriptorSet 0
- Decorate 283(g_tTexcdi4a) DescriptorSet 0
- Decorate 286(g_tTexcdu4a) DescriptorSet 0
+ Decorate 267(Color) Location 0
+ Decorate 271(Depth) BuiltIn FragDepth
+ Decorate 275(g_sSamp2d) DescriptorSet 0
+ Decorate 278(g_tTex1df4a) DescriptorSet 0
+ Decorate 278(g_tTex1df4a) Binding 0
+ Decorate 281(g_tTex1di4a) DescriptorSet 0
+ Decorate 284(g_tTex1du4a) DescriptorSet 0
+ Decorate 287(g_tTexcdf4a) DescriptorSet 0
+ Decorate 290(g_tTexcdi4a) DescriptorSet 0
+ Decorate 293(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -837,39 +869,43 @@
261: 6(float) Constant 1065353216
262: 7(fvec4) ConstantComposite 261 261 261 261
264: TypePointer Function 6(float)
- 268(g_sSamp2d): 15(ptr) Variable UniformConstant
- 269: TypeImage 6(float) 1D array sampled format:Unknown
- 270: TypePointer UniformConstant 269
-271(g_tTex1df4a): 270(ptr) Variable UniformConstant
- 272: TypeImage 24(int) 1D array sampled format:Unknown
- 273: TypePointer UniformConstant 272
-274(g_tTex1di4a): 273(ptr) Variable UniformConstant
- 275: TypeImage 44(int) 1D array sampled format:Unknown
- 276: TypePointer UniformConstant 275
-277(g_tTex1du4a): 276(ptr) Variable UniformConstant
- 278: TypeImage 6(float) Cube array sampled format:Unknown
- 279: TypePointer UniformConstant 278
-280(g_tTexcdf4a): 279(ptr) Variable UniformConstant
- 281: TypeImage 24(int) Cube array sampled format:Unknown
- 282: TypePointer UniformConstant 281
-283(g_tTexcdi4a): 282(ptr) Variable UniformConstant
- 284: TypeImage 44(int) Cube array sampled format:Unknown
- 285: TypePointer UniformConstant 284
-286(g_tTexcdu4a): 285(ptr) Variable UniformConstant
- 287: TypePointer UniformConstant 6(float)
- 288(c1): 287(ptr) Variable UniformConstant
- 289: TypeVector 6(float) 2
- 290: TypePointer UniformConstant 289(fvec2)
- 291(c2): 290(ptr) Variable UniformConstant
- 292: TypePointer UniformConstant 7(fvec4)
- 293(c4): 292(ptr) Variable UniformConstant
- 294: TypePointer UniformConstant 24(int)
- 295(o1): 294(ptr) Variable UniformConstant
- 296: TypeVector 24(int) 3
- 297: TypePointer UniformConstant 296(ivec3)
- 298(o3): 297(ptr) Variable UniformConstant
- 299: TypePointer UniformConstant 31(ivec4)
- 300(o4): 299(ptr) Variable UniformConstant
+ 266: TypePointer Output 7(fvec4)
+ 267(Color): 266(ptr) Variable Output
+ 270: TypePointer Output 6(float)
+ 271(Depth): 270(ptr) Variable Output
+ 275(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 276: TypeImage 6(float) 1D array sampled format:Unknown
+ 277: TypePointer UniformConstant 276
+278(g_tTex1df4a): 277(ptr) Variable UniformConstant
+ 279: TypeImage 24(int) 1D array sampled format:Unknown
+ 280: TypePointer UniformConstant 279
+281(g_tTex1di4a): 280(ptr) Variable UniformConstant
+ 282: TypeImage 44(int) 1D array sampled format:Unknown
+ 283: TypePointer UniformConstant 282
+284(g_tTex1du4a): 283(ptr) Variable UniformConstant
+ 285: TypeImage 6(float) Cube array sampled format:Unknown
+ 286: TypePointer UniformConstant 285
+287(g_tTexcdf4a): 286(ptr) Variable UniformConstant
+ 288: TypeImage 24(int) Cube array sampled format:Unknown
+ 289: TypePointer UniformConstant 288
+290(g_tTexcdi4a): 289(ptr) Variable UniformConstant
+ 291: TypeImage 44(int) Cube array sampled format:Unknown
+ 292: TypePointer UniformConstant 291
+293(g_tTexcdu4a): 292(ptr) Variable UniformConstant
+ 294: TypePointer UniformConstant 6(float)
+ 295(c1): 294(ptr) Variable UniformConstant
+ 296: TypeVector 6(float) 2
+ 297: TypePointer UniformConstant 296(fvec2)
+ 298(c2): 297(ptr) Variable UniformConstant
+ 299: TypePointer UniformConstant 7(fvec4)
+ 300(c4): 299(ptr) Variable UniformConstant
+ 301: TypePointer UniformConstant 24(int)
+ 302(o1): 301(ptr) Variable UniformConstant
+ 303: TypeVector 24(int) 3
+ 304: TypePointer UniformConstant 303(ivec3)
+ 305(o3): 304(ptr) Variable UniformConstant
+ 306: TypePointer UniformConstant 31(ivec4)
+ 307(o4): 306(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval001): 8(ptr) Variable Function
@@ -1117,6 +1153,11 @@
Store 263 262
265: 264(ptr) AccessChain 260(psout) 99
Store 265 261
- 266:258(PS_OUTPUT) Load 260(psout)
- ReturnValue 266
+ 268: 8(ptr) AccessChain 260(psout) 29
+ 269: 7(fvec4) Load 268
+ Store 267(Color) 269
+ 272: 264(ptr) AccessChain 260(psout) 99
+ 273: 6(float) Load 272
+ Store 271(Depth) 273
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index dd47567..18b35e4 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:281 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:46 Function Parameters:
0:? Sequence
0:65 Sequence
@@ -1045,7 +1045,7 @@
0:164 'g_tTex2dmsu4a' (uniform utexture2DMSArray)
0:276 move second child to first child (temp 4-component vector of float)
0:276 Color: direct index for structure (temp 4-component vector of float)
-0:276 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:276 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:276 Constant:
0:276 0 (const int)
0:276 Constant:
@@ -1054,14 +1054,27 @@
0:276 1.000000
0:276 1.000000
0:277 move second child to first child (temp float)
-0:277 Depth: direct index for structure (temp float FragDepth)
-0:277 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:277 Depth: direct index for structure (temp float)
+0:277 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:277 Constant:
0:277 1 (const int)
0:277 Constant:
0:277 1.000000
-0:279 Branch: Return with expression
-0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:279 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:279 Color: direct index for structure (temp 4-component vector of float)
+0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:279 Constant:
+0:279 0 (const int)
+0:279 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:279 Depth: direct index for structure (temp float)
+0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -1091,6 +1104,8 @@
0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray)
0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -1099,7 +1114,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:281 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:46 Function Parameters:
0:? Sequence
0:65 Sequence
@@ -2142,7 +2157,7 @@
0:164 'g_tTex2dmsu4a' (uniform utexture2DMSArray)
0:276 move second child to first child (temp 4-component vector of float)
0:276 Color: direct index for structure (temp 4-component vector of float)
-0:276 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:276 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:276 Constant:
0:276 0 (const int)
0:276 Constant:
@@ -2151,14 +2166,27 @@
0:276 1.000000
0:276 1.000000
0:277 move second child to first child (temp float)
-0:277 Depth: direct index for structure (temp float FragDepth)
-0:277 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:277 Depth: direct index for structure (temp float)
+0:277 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:277 Constant:
0:277 1 (const int)
0:277 Constant:
0:277 1.000000
-0:279 Branch: Return with expression
-0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:279 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:279 Color: direct index for structure (temp 4-component vector of float)
+0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:279 Constant:
+0:279 0 (const int)
+0:279 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:279 Depth: direct index for structure (temp float)
+0:279 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -2188,10 +2216,12 @@
0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray)
0:? 'g_tTex2dmsi4a' (uniform itexture2DMSArray)
0:? 'g_tTex2dmsu4a' (uniform utexture2DMSArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 538
+// Id's are bound by 545
Capability Shader
Capability Sampled1D
@@ -2200,9 +2230,8 @@
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 534 538
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "sizeQueryTemp"
Name 12 "g_tTex1df4"
@@ -2289,7 +2318,9 @@
MemberName 522(PS_OUTPUT) 0 "Color"
MemberName 522(PS_OUTPUT) 1 "Depth"
Name 524 "psout"
- Name 537 "g_sSamp"
+ Name 534 "Color"
+ Name 538 "Depth"
+ Name 544 "g_sSamp"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 29(g_tTex1di4) DescriptorSet 0
@@ -2318,9 +2349,10 @@
Decorate 482(g_tTex2dmsf4a) DescriptorSet 0
Decorate 496(g_tTex2dmsi4a) DescriptorSet 0
Decorate 510(g_tTex2dmsu4a) DescriptorSet 0
- MemberDecorate 522(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 537(g_sSamp) DescriptorSet 0
- Decorate 537(g_sSamp) Binding 0
+ Decorate 534(Color) Location 0
+ Decorate 538(Depth) BuiltIn FragDepth
+ Decorate 544(g_sSamp) DescriptorSet 0
+ Decorate 544(g_sSamp) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -2427,9 +2459,13 @@
528: TypePointer Function 521(fvec4)
530: 14(int) Constant 1
531: TypePointer Function 9(float)
- 535: TypeSampler
- 536: TypePointer UniformConstant 535
- 537(g_sSamp): 536(ptr) Variable UniformConstant
+ 533: TypePointer Output 521(fvec4)
+ 534(Color): 533(ptr) Variable Output
+ 537: TypePointer Output 9(float)
+ 538(Depth): 537(ptr) Variable Output
+ 542: TypeSampler
+ 543: TypePointer UniformConstant 542
+ 544(g_sSamp): 543(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(sizeQueryTemp): 7(ptr) Variable Function
@@ -3043,6 +3079,11 @@
Store 529 527
532: 531(ptr) AccessChain 524(psout) 530
Store 532 526
- 533:522(PS_OUTPUT) Load 524(psout)
- ReturnValue 533
+ 535: 528(ptr) AccessChain 524(psout) 525
+ 536: 521(fvec4) Load 535
+ Store 534(Color) 536
+ 539: 531(ptr) AccessChain 524(psout) 530
+ 540: 9(float) Load 539
+ Store 538(Depth) 540
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index 9170402..3c063c1 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -1,7 +1,7 @@
hlsl.getdimensions.dx10.vert
Shader version: 450
0:? Sequence
-0:28 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:11 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:11 Function Parameters:
0:? Sequence
0:21 Sequence
@@ -27,8 +27,8 @@
0:22 textureQueryLevels (temp uint)
0:22 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:24 move second child to first child (temp 4-component vector of float)
-0:24 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:24 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:24 Pos: direct index for structure (temp 4-component vector of float)
+0:24 'vsout' (temp structure{temp 4-component vector of float Pos})
0:24 Constant:
0:24 0 (const int)
0:? Constant:
@@ -36,11 +36,19 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:26 Branch: Return with expression
-0:26 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:26 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:26 Pos: direct index for structure (temp 4-component vector of float)
+0:26 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:26 Constant:
+0:26 0 (const int)
+0:26 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:? 'Pos' (out 4-component vector of float Position)
Linked vertex stage:
@@ -48,7 +56,7 @@
Shader version: 450
0:? Sequence
-0:28 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:11 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:11 Function Parameters:
0:? Sequence
0:21 Sequence
@@ -74,8 +82,8 @@
0:22 textureQueryLevels (temp uint)
0:22 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:24 move second child to first child (temp 4-component vector of float)
-0:24 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:24 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:24 Pos: direct index for structure (temp 4-component vector of float)
+0:24 'vsout' (temp structure{temp 4-component vector of float Pos})
0:24 Constant:
0:24 0 (const int)
0:? Constant:
@@ -83,23 +91,30 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:26 Branch: Return with expression
-0:26 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:26 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:26 Pos: direct index for structure (temp 4-component vector of float)
+0:26 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:26 Constant:
+0:26 0 (const int)
+0:26 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:? 'Pos' (out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 40
+// Id's are bound by 43
Capability Shader
Capability Sampled1D
Capability ImageQuery
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
- Source HLSL 450
+ EntryPoint Vertex 4 "main" 36
Name 4 "main"
Name 8 "sizeQueryTemp"
Name 12 "g_tTex1df4"
@@ -109,12 +124,13 @@
Name 27 "VS_OUTPUT"
MemberName 27(VS_OUTPUT) 0 "Pos"
Name 29 "vsout"
- Name 39 "g_sSamp"
+ Name 36 "Pos"
+ Name 42 "g_sSamp"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
- MemberDecorate 27(VS_OUTPUT) 0 BuiltIn FragCoord
- Decorate 39(g_sSamp) DescriptorSet 0
- Decorate 39(g_sSamp) Binding 0
+ Decorate 36(Pos) BuiltIn Position
+ Decorate 42(g_sSamp) DescriptorSet 0
+ Decorate 42(g_sSamp) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -132,9 +148,11 @@
31: 9(float) Constant 0
32: 26(fvec4) ConstantComposite 31 31 31 31
33: TypePointer Function 26(fvec4)
- 37: TypeSampler
- 38: TypePointer UniformConstant 37
- 39(g_sSamp): 38(ptr) Variable UniformConstant
+ 35: TypePointer Output 26(fvec4)
+ 36(Pos): 35(ptr) Variable Output
+ 40: TypeSampler
+ 41: TypePointer UniformConstant 40
+ 42(g_sSamp): 41(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(sizeQueryTemp): 7(ptr) Variable Function
@@ -157,6 +175,8 @@
Store 23(NumberOfLevelsU) 25
34: 33(ptr) AccessChain 29(vsout) 30
Store 34 32
- 35:27(VS_OUTPUT) Load 29(vsout)
- ReturnValue 35
+ 37: 33(ptr) AccessChain 29(vsout) 30
+ 38: 26(fvec4) Load 37
+ Store 36(Pos) 38
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index e2cf6fe..a44e944 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -7,7 +7,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:13 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:13 Function Parameters:
0:? Sequence
0:16 Sequence
@@ -28,7 +28,7 @@
0:17 2 (const int)
0:19 move second child to first child (temp 4-component vector of float)
0:19 Color: direct index for structure (temp 4-component vector of float)
-0:19 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:19 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:19 Constant:
0:19 0 (const int)
0:19 Constant:
@@ -37,18 +37,33 @@
0:19 1.000000
0:19 1.000000
0:20 move second child to first child (temp float)
-0:20 Depth: direct index for structure (temp float FragDepth)
-0:20 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Depth: direct index for structure (temp float)
+0:20 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 1.000000
-0:22 Branch: Return with expression
-0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:22 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:22 Color: direct index for structure (temp 4-component vector of float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:22 Depth: direct index for structure (temp float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:22 Constant:
+0:22 1 (const int)
+0:22 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex2dmsf4' (uniform texture2DMS)
0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -57,7 +72,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:13 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:13 Function Parameters:
0:? Sequence
0:16 Sequence
@@ -78,7 +93,7 @@
0:17 2 (const int)
0:19 move second child to first child (temp 4-component vector of float)
0:19 Color: direct index for structure (temp 4-component vector of float)
-0:19 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:19 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:19 Constant:
0:19 0 (const int)
0:19 Constant:
@@ -87,17 +102,32 @@
0:19 1.000000
0:19 1.000000
0:20 move second child to first child (temp float)
-0:20 Depth: direct index for structure (temp float FragDepth)
-0:20 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Depth: direct index for structure (temp float)
+0:20 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 1.000000
-0:22 Branch: Return with expression
-0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:22 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:22 Color: direct index for structure (temp 4-component vector of float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:22 Constant:
+0:22 0 (const int)
+0:22 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:22 Depth: direct index for structure (temp float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:22 Constant:
+0:22 1 (const int)
+0:22 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex2dmsf4' (uniform texture2DMS)
0:? 'g_tTex2dmsf4a' (uniform texture2DMSArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index 4554ec6..499015a 100755
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -2,71 +2,89 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Equal (temp bool)
-0:3 'input' (in 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
0:3 true case
-0:4 Branch: Return with expression
-0:4 'input' (in 4-component vector of float)
+0:4 Sequence
+0:4 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:4 'input' (layout(location=0 ) in 4-component vector of float)
+0:4 Branch: Return
0:6 Test condition and select (temp void)
0:6 Condition
0:6 Compare Equal (temp bool)
-0:6 'input' (in 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
0:6 true case
-0:7 Branch: Return with expression
-0:7 'input' (in 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 Branch: Return
0:6 false case
-0:9 Branch: Return with expression
-0:9 Negate value (temp 4-component vector of float)
-0:9 'input' (in 4-component vector of float)
+0:9 Sequence
+0:9 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:9 Negate value (temp 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
+0:9 Branch: Return
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
-0:11 'input' (in 4-component vector of float)
-0:11 'input' (in 4-component vector of float)
+0:11 'input' (layout(location=0 ) in 4-component vector of float)
+0:11 'input' (layout(location=0 ) in 4-component vector of float)
0:11 true case is null
0:14 Test condition and select (temp void)
0:14 Condition
0:14 Compare Equal (temp bool)
-0:14 'input' (in 4-component vector of float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 true case is null
0:19 Test condition and select (temp void)
0:19 Condition
0:19 Compare Equal (temp bool)
-0:19 'input' (in 4-component vector of float)
-0:19 'input' (in 4-component vector of float)
+0:19 'input' (layout(location=0 ) in 4-component vector of float)
+0:19 'input' (layout(location=0 ) in 4-component vector of float)
0:19 true case
0:? Sequence
-0:20 Branch: Return with expression
-0:20 'input' (in 4-component vector of float)
+0:20 Sequence
+0:20 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:20 'input' (layout(location=0 ) in 4-component vector of float)
+0:20 Branch: Return
0:23 Test condition and select (temp void)
0:23 Condition
0:23 Compare Equal (temp bool)
-0:23 'input' (in 4-component vector of float)
-0:23 'input' (in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
0:23 true case
0:? Sequence
-0:24 Branch: Return with expression
-0:24 'input' (in 4-component vector of float)
+0:24 Sequence
+0:24 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:24 'input' (layout(location=0 ) in 4-component vector of float)
+0:24 Branch: Return
0:23 false case
0:? Sequence
-0:26 Branch: Return with expression
-0:26 Negate value (temp 4-component vector of float)
-0:26 'input' (in 4-component vector of float)
+0:26 Sequence
+0:26 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:26 Negate value (temp 4-component vector of float)
+0:26 'input' (layout(location=0 ) in 4-component vector of float)
+0:26 Branch: Return
0:30 Test condition and select (temp void)
0:30 Condition
0:30 move second child to first child (temp float)
0:30 'ii' (temp float)
0:30 direct index (temp float)
-0:30 'input' (in 4-component vector of float)
+0:30 'input' (layout(location=0 ) in 4-component vector of float)
0:30 Constant:
0:30 2 (const int)
0:30 true case
@@ -75,6 +93,8 @@
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -83,71 +103,89 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Test condition and select (temp void)
0:3 Condition
0:3 Compare Equal (temp bool)
-0:3 'input' (in 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
0:3 true case
-0:4 Branch: Return with expression
-0:4 'input' (in 4-component vector of float)
+0:4 Sequence
+0:4 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:4 'input' (layout(location=0 ) in 4-component vector of float)
+0:4 Branch: Return
0:6 Test condition and select (temp void)
0:6 Condition
0:6 Compare Equal (temp bool)
-0:6 'input' (in 4-component vector of float)
-0:6 'input' (in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
+0:6 'input' (layout(location=0 ) in 4-component vector of float)
0:6 true case
-0:7 Branch: Return with expression
-0:7 'input' (in 4-component vector of float)
+0:7 Sequence
+0:7 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:7 'input' (layout(location=0 ) in 4-component vector of float)
+0:7 Branch: Return
0:6 false case
-0:9 Branch: Return with expression
-0:9 Negate value (temp 4-component vector of float)
-0:9 'input' (in 4-component vector of float)
+0:9 Sequence
+0:9 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:9 Negate value (temp 4-component vector of float)
+0:9 'input' (layout(location=0 ) in 4-component vector of float)
+0:9 Branch: Return
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Compare Equal (temp bool)
-0:11 'input' (in 4-component vector of float)
-0:11 'input' (in 4-component vector of float)
+0:11 'input' (layout(location=0 ) in 4-component vector of float)
+0:11 'input' (layout(location=0 ) in 4-component vector of float)
0:11 true case is null
0:14 Test condition and select (temp void)
0:14 Condition
0:14 Compare Equal (temp bool)
-0:14 'input' (in 4-component vector of float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:14 true case is null
0:19 Test condition and select (temp void)
0:19 Condition
0:19 Compare Equal (temp bool)
-0:19 'input' (in 4-component vector of float)
-0:19 'input' (in 4-component vector of float)
+0:19 'input' (layout(location=0 ) in 4-component vector of float)
+0:19 'input' (layout(location=0 ) in 4-component vector of float)
0:19 true case
0:? Sequence
-0:20 Branch: Return with expression
-0:20 'input' (in 4-component vector of float)
+0:20 Sequence
+0:20 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:20 'input' (layout(location=0 ) in 4-component vector of float)
+0:20 Branch: Return
0:23 Test condition and select (temp void)
0:23 Condition
0:23 Compare Equal (temp bool)
-0:23 'input' (in 4-component vector of float)
-0:23 'input' (in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
0:23 true case
0:? Sequence
-0:24 Branch: Return with expression
-0:24 'input' (in 4-component vector of float)
+0:24 Sequence
+0:24 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:24 'input' (layout(location=0 ) in 4-component vector of float)
+0:24 Branch: Return
0:23 false case
0:? Sequence
-0:26 Branch: Return with expression
-0:26 Negate value (temp 4-component vector of float)
-0:26 'input' (in 4-component vector of float)
+0:26 Sequence
+0:26 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:26 Negate value (temp 4-component vector of float)
+0:26 'input' (layout(location=0 ) in 4-component vector of float)
+0:26 Branch: Return
0:30 Test condition and select (temp void)
0:30 Condition
0:30 move second child to first child (temp float)
0:30 'ii' (temp float)
0:30 direct index (temp float)
-0:30 'input' (in 4-component vector of float)
+0:30 'input' (layout(location=0 ) in 4-component vector of float)
0:30 Constant:
0:30 2 (const int)
0:30 true case
@@ -156,21 +194,25 @@
0:32 Pre-Increment (temp int)
0:32 'ii' (temp int)
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 82
+// Id's are bound by 84
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 19
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "input"
- Name 65 "ii"
- Name 78 "ii"
+ Name 19 "@entryPointOutput"
+ Name 67 "ii"
+ Name 80 "ii"
+ Decorate 9(input) Location 0
+ Decorate 19(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -179,18 +221,20 @@
9(input): 8(ptr) Variable Input
12: TypeBool
13: TypeVector 12(bool) 4
- 64: TypePointer Function 6(float)
- 66: TypeInt 32 0
- 67: 66(int) Constant 2
- 68: TypePointer Input 6(float)
- 74: 6(float) Constant 1065353216
- 76: TypeInt 32 1
- 77: TypePointer Function 76(int)
- 80: 76(int) Constant 1
+ 18: TypePointer Output 7(fvec4)
+19(@entryPointOutput): 18(ptr) Variable Output
+ 66: TypePointer Function 6(float)
+ 68: TypeInt 32 0
+ 69: 68(int) Constant 2
+ 70: TypePointer Input 6(float)
+ 76: 6(float) Constant 1065353216
+ 78: TypeInt 32 1
+ 79: TypePointer Function 78(int)
+ 82: 78(int) Constant 1
4(PixelShaderFunction): 2 Function None 3
5: Label
- 65(ii): 64(ptr) Variable Function
- 78(ii): 77(ptr) Variable Function
+ 67(ii): 66(ptr) Variable Function
+ 80(ii): 79(ptr) Variable Function
10: 7(fvec4) Load 9(input)
11: 7(fvec4) Load 9(input)
14: 13(bvec4) FOrdEqual 10 11
@@ -198,78 +242,84 @@
SelectionMerge 17 None
BranchConditional 15 16 17
16: Label
- 18: 7(fvec4) Load 9(input)
- ReturnValue 18
+ 20: 7(fvec4) Load 9(input)
+ Store 19(@entryPointOutput) 20
+ Return
17: Label
- 20: 7(fvec4) Load 9(input)
- 21: 7(fvec4) Load 9(input)
- 22: 13(bvec4) FOrdEqual 20 21
- 23: 12(bool) All 22
- SelectionMerge 25 None
- BranchConditional 23 24 28
- 24: Label
- 26: 7(fvec4) Load 9(input)
- ReturnValue 26
- 28: Label
- 29: 7(fvec4) Load 9(input)
- 30: 7(fvec4) FNegate 29
- ReturnValue 30
- 25: Label
- 32: 7(fvec4) Load 9(input)
- 33: 7(fvec4) Load 9(input)
- 34: 13(bvec4) FOrdEqual 32 33
- 35: 12(bool) All 34
- SelectionMerge 37 None
- BranchConditional 35 36 37
- 36: Label
- Branch 37
- 37: Label
- 38: 7(fvec4) Load 9(input)
- 39: 7(fvec4) Load 9(input)
- 40: 13(bvec4) FOrdEqual 38 39
- 41: 12(bool) All 40
- SelectionMerge 43 None
- BranchConditional 41 42 43
- 42: Label
- Branch 43
- 43: Label
- 44: 7(fvec4) Load 9(input)
- 45: 7(fvec4) Load 9(input)
- 46: 13(bvec4) FOrdEqual 44 45
- 47: 12(bool) All 46
- SelectionMerge 49 None
- BranchConditional 47 48 49
- 48: Label
- 50: 7(fvec4) Load 9(input)
- ReturnValue 50
- 49: Label
- 52: 7(fvec4) Load 9(input)
- 53: 7(fvec4) Load 9(input)
- 54: 13(bvec4) FOrdEqual 52 53
- 55: 12(bool) All 54
- SelectionMerge 57 None
- BranchConditional 55 56 60
- 56: Label
- 58: 7(fvec4) Load 9(input)
- ReturnValue 58
- 60: Label
- 61: 7(fvec4) Load 9(input)
- 62: 7(fvec4) FNegate 61
- ReturnValue 62
- 57: Label
- 69: 68(ptr) AccessChain 9(input) 67
- 70: 6(float) Load 69
- Store 65(ii) 70
- SelectionMerge 72 None
- BranchConditional 70 71 72
- 71: Label
- 73: 6(float) Load 65(ii)
- 75: 6(float) FAdd 73 74
- Store 65(ii) 75
- Branch 72
- 72: Label
- 79: 76(int) Load 78(ii)
- 81: 76(int) IAdd 79 80
- Store 78(ii) 81
+ 22: 7(fvec4) Load 9(input)
+ 23: 7(fvec4) Load 9(input)
+ 24: 13(bvec4) FOrdEqual 22 23
+ 25: 12(bool) All 24
+ SelectionMerge 27 None
+ BranchConditional 25 26 30
+ 26: Label
+ 28: 7(fvec4) Load 9(input)
+ Store 19(@entryPointOutput) 28
+ Return
+ 30: Label
+ 31: 7(fvec4) Load 9(input)
+ 32: 7(fvec4) FNegate 31
+ Store 19(@entryPointOutput) 32
+ Return
+ 27: Label
+ 34: 7(fvec4) Load 9(input)
+ 35: 7(fvec4) Load 9(input)
+ 36: 13(bvec4) FOrdEqual 34 35
+ 37: 12(bool) All 36
+ SelectionMerge 39 None
+ BranchConditional 37 38 39
+ 38: Label
+ Branch 39
+ 39: Label
+ 40: 7(fvec4) Load 9(input)
+ 41: 7(fvec4) Load 9(input)
+ 42: 13(bvec4) FOrdEqual 40 41
+ 43: 12(bool) All 42
+ SelectionMerge 45 None
+ BranchConditional 43 44 45
+ 44: Label
+ Branch 45
+ 45: Label
+ 46: 7(fvec4) Load 9(input)
+ 47: 7(fvec4) Load 9(input)
+ 48: 13(bvec4) FOrdEqual 46 47
+ 49: 12(bool) All 48
+ SelectionMerge 51 None
+ BranchConditional 49 50 51
+ 50: Label
+ 52: 7(fvec4) Load 9(input)
+ Store 19(@entryPointOutput) 52
+ Return
+ 51: Label
+ 54: 7(fvec4) Load 9(input)
+ 55: 7(fvec4) Load 9(input)
+ 56: 13(bvec4) FOrdEqual 54 55
+ 57: 12(bool) All 56
+ SelectionMerge 59 None
+ BranchConditional 57 58 62
+ 58: Label
+ 60: 7(fvec4) Load 9(input)
+ Store 19(@entryPointOutput) 60
+ Return
+ 62: Label
+ 63: 7(fvec4) Load 9(input)
+ 64: 7(fvec4) FNegate 63
+ Store 19(@entryPointOutput) 64
+ Return
+ 59: Label
+ 71: 70(ptr) AccessChain 9(input) 69
+ 72: 6(float) Load 71
+ Store 67(ii) 72
+ SelectionMerge 74 None
+ BranchConditional 72 73 74
+ 73: Label
+ 75: 6(float) Load 67(ii)
+ 77: 6(float) FAdd 75 76
+ Store 67(ii) 77
+ Branch 74
+ 74: Label
+ 81: 78(int) Load 80(ii)
+ 83: 78(int) IAdd 81 82
+ Store 80(ii) 83
Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index bc7c21b..99acc23 100755
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -78,9 +78,9 @@
0:18 Constant:
0:18 4 (const uint)
0:18 5 (const uint)
-0:37 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:21 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:21 Function Parameters:
-0:21 'input' (in 4-component vector of float)
+0:21 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp 4-component vector of float)
@@ -124,10 +124,13 @@
0:33 move second child to first child (temp float)
0:33 'a9' (temp float)
0:33 'a5' (global float)
-0:35 Branch: Return with expression
-0:35 component-wise multiply (temp 4-component vector of float)
-0:35 'input' (in 4-component vector of float)
-0:35 'a1' (global 4-component vector of float)
+0:35 Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:35 component-wise multiply (temp 4-component vector of float)
+0:35 'input' (layout(location=0 ) in 4-component vector of float)
+0:35 'a1' (global 4-component vector of float)
+0:35 Branch: Return
0:? Linker Objects
0:? 'a1' (global 4-component vector of float)
0:? 'b1' (global 4-component vector of float)
@@ -147,6 +150,8 @@
0:? 'single2' (global structure{temp 2-component vector of uint v})
0:? 'single3' (global structure{temp structure{temp int f} s1})
0:? 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -231,9 +236,9 @@
0:18 Constant:
0:18 4 (const uint)
0:18 5 (const uint)
-0:37 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:21 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:21 Function Parameters:
-0:21 'input' (in 4-component vector of float)
+0:21 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:22 Sequence
0:22 move second child to first child (temp 4-component vector of float)
@@ -277,10 +282,13 @@
0:33 move second child to first child (temp float)
0:33 'a9' (temp float)
0:33 'a5' (global float)
-0:35 Branch: Return with expression
-0:35 component-wise multiply (temp 4-component vector of float)
-0:35 'input' (in 4-component vector of float)
-0:35 'a1' (global 4-component vector of float)
+0:35 Sequence
+0:35 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:35 component-wise multiply (temp 4-component vector of float)
+0:35 'input' (layout(location=0 ) in 4-component vector of float)
+0:35 'a1' (global 4-component vector of float)
+0:35 Branch: Return
0:? Linker Objects
0:? 'a1' (global 4-component vector of float)
0:? 'b1' (global 4-component vector of float)
@@ -300,17 +308,18 @@
0:? 'single2' (global structure{temp 2-component vector of uint v})
0:? 'single3' (global structure{temp structure{temp int f} s1})
0:? 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1})
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 95
+// Id's are bound by 97
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "ShaderFunction" 88
+ EntryPoint Fragment 4 "ShaderFunction" 88 90
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "ShaderFunction"
Name 9 "a1"
Name 14 "b1"
@@ -348,9 +357,12 @@
Name 82 "a8"
Name 83 "b2"
Name 85 "a9"
- Name 88 "input"
- Name 93 "c4"
- Name 94 "b5"
+ Name 88 "@entryPointOutput"
+ Name 90 "input"
+ Name 95 "c4"
+ Name 96 "b5"
+ Decorate 88(@entryPointOutput) Location 0
+ Decorate 90(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -419,10 +431,12 @@
73: 32(int) Constant 12
81: TypePointer Function 6(float)
83(b2): 22(ptr) Variable Private
- 87: TypePointer Input 7(fvec4)
- 88(input): 87(ptr) Variable Input
- 93(c4): 22(ptr) Variable Private
- 94(b5): 22(ptr) Variable Private
+ 87: TypePointer Output 7(fvec4)
+88(@entryPointOutput): 87(ptr) Variable Output
+ 89: TypePointer Input 7(fvec4)
+ 90(input): 89(ptr) Variable Input
+ 95(c4): 22(ptr) Variable Private
+ 96(b5): 22(ptr) Variable Private
4(ShaderFunction): 2 Function None 3
5: Label
62(a2): 61(ptr) Variable Function
@@ -458,8 +472,9 @@
Store 82(a8) 84
86: 6(float) Load 29(a5)
Store 85(a9) 86
- 89: 7(fvec4) Load 88(input)
- 90: 7(fvec4) Load 9(a1)
- 91: 7(fvec4) FMul 89 90
- ReturnValue 91
+ 91: 7(fvec4) Load 90(input)
+ 92: 7(fvec4) Load 9(a1)
+ 93: 7(fvec4) FMul 91 92
+ Store 88(@entryPointOutput) 93
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out
index 439fd37..3657cb2 100644
--- a/Test/baseResults/hlsl.init2.frag.out
+++ b/Test/baseResults/hlsl.init2.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:23 Function Definition: Test1( (global void)
+0:3 Function Definition: Test1( (global void)
0:3 Function Parameters:
0:? Sequence
0:5 Sequence
@@ -29,7 +29,7 @@
0:20 8.000000
0:20 9.000000
0:20 10.000000
-0:33 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:26 Function Definition: main( (global structure{temp 4-component vector of float color})
0:26 Function Parameters:
0:? Sequence
0:27 Function Call: Test1( (global void)
@@ -43,9 +43,17 @@
0:30 1.000000
0:30 1.000000
0:30 1.000000
-0:31 Branch: Return with expression
-0:31 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:31 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:31 color: direct index for structure (temp 4-component vector of float)
+0:31 'ps_output' (temp structure{temp 4-component vector of float color})
+0:31 Constant:
+0:31 0 (const int)
+0:31 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
@@ -54,7 +62,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:23 Function Definition: Test1( (global void)
+0:3 Function Definition: Test1( (global void)
0:3 Function Parameters:
0:? Sequence
0:5 Sequence
@@ -81,7 +89,7 @@
0:20 8.000000
0:20 9.000000
0:20 10.000000
-0:33 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:26 Function Definition: main( (global structure{temp 4-component vector of float color})
0:26 Function Parameters:
0:? Sequence
0:27 Function Call: Test1( (global void)
@@ -95,20 +103,27 @@
0:30 1.000000
0:30 1.000000
0:30 1.000000
-0:31 Branch: Return with expression
-0:31 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:31 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:31 color: direct index for structure (temp 4-component vector of float)
+0:31 'ps_output' (temp structure{temp 4-component vector of float color})
+0:31 Constant:
+0:31 0 (const int)
+0:31 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 44
+// Id's are bound by 47
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 43
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 6 "Test1("
Name 10 "mystruct"
@@ -124,6 +139,8 @@
Name 34 "PS_OUTPUT"
MemberName 34(PS_OUTPUT) 0 "color"
Name 36 "ps_output"
+ Name 43 "color"
+ Decorate 43(color) Location 0
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@@ -153,14 +170,18 @@
38: 37(int) Constant 0
39: 33(fvec4) ConstantComposite 13 13 13 13
40: TypePointer Function 33(fvec4)
+ 42: TypePointer Output 33(fvec4)
+ 43(color): 42(ptr) Variable Output
4(main): 2 Function None 3
5: Label
36(ps_output): 35(ptr) Variable Function
32: 2 FunctionCall 6(Test1()
41: 40(ptr) AccessChain 36(ps_output) 38
Store 41 39
- 42:34(PS_OUTPUT) Load 36(ps_output)
- ReturnValue 42
+ 44: 40(ptr) AccessChain 36(ps_output) 38
+ 45: 33(fvec4) Load 44
+ Store 43(color) 45
+ Return
FunctionEnd
6(Test1(): 2 Function None 3
7: Label
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 3fb207b..2fcb722 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: MyFunc(f1;f1;f1; (global void)
+0:8 Function Definition: MyFunc(f1;f1;f1; (global void)
0:8 Function Parameters:
0:8 'x' (in float)
0:8 'y' (out float)
@@ -18,7 +18,7 @@
0:11 'x' (in float)
0:11 Constant:
0:11 -1.000000
-0:26 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:15 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth})
0:15 Function Parameters:
0:15 'inpos' (noperspective in 4-component vector of float FragCoord)
0:? Sequence
@@ -37,7 +37,7 @@
0:19 'z' (temp float)
0:21 move second child to first child (temp 4-component vector of float)
0:21 Color: direct index for structure (temp 4-component vector of float)
-0:21 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:21 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:21 Constant:
0:21 0 (const int)
0:? Construct vec4 (temp 4-component vector of float)
@@ -47,17 +47,33 @@
0:21 Constant:
0:21 1.000000
0:22 move second child to first child (temp float)
-0:22 Depth: direct index for structure (temp float FragDepth)
-0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:22 Depth: direct index for structure (temp float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
0:22 1 (const int)
0:22 direct index (temp float)
0:22 'inpos' (noperspective in 4-component vector of float FragCoord)
0:22 Constant:
0:22 3 (const int)
-0:24 Branch: Return with expression
-0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:24 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:24 Color: direct index for structure (temp 4-component vector of float)
+0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:24 Depth: direct index for structure (temp float)
+0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Branch: Return
0:? Linker Objects
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
+0:? 'inpos' (noperspective in 4-component vector of float FragCoord)
Linked fragment stage:
@@ -66,7 +82,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: MyFunc(f1;f1;f1; (global void)
+0:8 Function Definition: MyFunc(f1;f1;f1; (global void)
0:8 Function Parameters:
0:8 'x' (in float)
0:8 'y' (out float)
@@ -82,7 +98,7 @@
0:11 'x' (in float)
0:11 Constant:
0:11 -1.000000
-0:26 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:15 Function Definition: main(vf4; (global structure{temp 4-component vector of float Color, temp float Depth})
0:15 Function Parameters:
0:15 'inpos' (noperspective in 4-component vector of float FragCoord)
0:? Sequence
@@ -101,7 +117,7 @@
0:19 'z' (temp float)
0:21 move second child to first child (temp 4-component vector of float)
0:21 Color: direct index for structure (temp 4-component vector of float)
-0:21 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:21 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:21 Constant:
0:21 0 (const int)
0:? Construct vec4 (temp 4-component vector of float)
@@ -111,28 +127,43 @@
0:21 Constant:
0:21 1.000000
0:22 move second child to first child (temp float)
-0:22 Depth: direct index for structure (temp float FragDepth)
-0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:22 Depth: direct index for structure (temp float)
+0:22 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
0:22 1 (const int)
0:22 direct index (temp float)
0:22 'inpos' (noperspective in 4-component vector of float FragCoord)
0:22 Constant:
0:22 3 (const int)
-0:24 Branch: Return with expression
-0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:24 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:24 Color: direct index for structure (temp 4-component vector of float)
+0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24 Constant:
+0:24 0 (const int)
+0:24 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:24 Depth: direct index for structure (temp float)
+0:24 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24 Constant:
+0:24 1 (const int)
+0:24 Branch: Return
0:? Linker Objects
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
+0:? 'inpos' (noperspective in 4-component vector of float FragCoord)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 54
+// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 45
+ EntryPoint Fragment 4 "main" 45 53 57
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 12 "MyFunc(f1;f1;f1;"
Name 9 "x"
@@ -149,9 +180,12 @@
MemberName 31(PS_OUTPUT) 1 "Depth"
Name 33 "psout"
Name 45 "inpos"
- MemberDecorate 31(PS_OUTPUT) 1 BuiltIn FragDepth
+ Name 53 "Color"
+ Name 57 "Depth"
Decorate 45(inpos) NoPerspective
Decorate 45(inpos) BuiltIn FragCoord
+ Decorate 53(Color) Location 0
+ Decorate 57(Depth) BuiltIn FragDepth
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -173,6 +207,10 @@
46: TypeInt 32 0
47: 46(int) Constant 3
48: TypePointer Input 6(float)
+ 52: TypePointer Output 30(fvec4)
+ 53(Color): 52(ptr) Variable Output
+ 56: TypePointer Output 6(float)
+ 57(Depth): 56(ptr) Variable Output
4(main): 2 Function None 3
5: Label
17(x): 7(ptr) Variable Function
@@ -203,8 +241,13 @@
50: 6(float) Load 49
51: 7(ptr) AccessChain 33(psout) 43
Store 51 50
- 52:31(PS_OUTPUT) Load 33(psout)
- ReturnValue 52
+ 54: 41(ptr) AccessChain 33(psout) 35
+ 55: 30(fvec4) Load 54
+ Store 53(Color) 55
+ 58: 7(ptr) AccessChain 33(psout) 43
+ 59: 6(float) Load 58
+ Store 57(Depth) 59
+ Return
FunctionEnd
12(MyFunc(f1;f1;f1;): 2 Function None 8
9(x): 7(ptr) FunctionParameter
diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index c400fea..95e1725 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -2,7 +2,7 @@
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
-0:14 Function Definition: ComputeShaderFunction( (global float)
+0:3 Function Definition: ComputeShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
@@ -11,10 +11,14 @@
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
-0:11 Branch: Return with expression
-0:11 Constant:
-0:11 0.000000
+0:11 Sequence
+0:11 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:11 Constant:
+0:11 0.000000
+0:11 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
Linked compute stage:
@@ -23,7 +27,7 @@
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
-0:14 Function Definition: ComputeShaderFunction( (global float)
+0:3 Function Definition: ComputeShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 MemoryBarrier (global void)
@@ -32,22 +36,27 @@
0:7 GroupMemoryBarrierWithGroupSync (global void)
0:8 WorkgroupMemoryBarrier (global void)
0:9 WorkgroupMemoryBarrierWithGroupSync (global void)
-0:11 Branch: Return with expression
-0:11 Constant:
-0:11 0.000000
+0:11 Sequence
+0:11 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:11 Constant:
+0:11 0.000000
+0:11 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 15
+// Id's are bound by 17
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "ComputeShaderFunction"
+ EntryPoint GLCompute 4 "ComputeShaderFunction" 14
ExecutionMode 4 LocalSize 1 1 1
- Source HLSL 450
Name 4 "ComputeShaderFunction"
+ Name 14 "@entryPointOutput"
+ Decorate 14(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -57,7 +66,9 @@
10: 6(int) Constant 2
11: 6(int) Constant 256
12: TypeFloat 32
- 13: 12(float) Constant 0
+ 13: TypePointer Output 12(float)
+14(@entryPointOutput): 13(ptr) Variable Output
+ 15: 12(float) Constant 0
4(ComputeShaderFunction): 2 Function None 3
5: Label
MemoryBarrier 7 8
@@ -66,5 +77,6 @@
ControlBarrier 7 7 9
MemoryBarrier 10 11
ControlBarrier 10 10 11
- ReturnValue 13
+ Store 14(@entryPointOutput) 15
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index 4c7eabb..b760c65 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -2,7 +2,7 @@
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
-0:44 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
@@ -74,7 +74,7 @@
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
-0:50 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 1-component vector of float)
0:45 'inF1' (in 1-component vector of float)
@@ -83,7 +83,7 @@
0:47 Branch: Return with expression
0:47 Constant:
0:47 0.000000
-0:77 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:51 Function Parameters:
0:51 'inF0' (in 2-component vector of float)
0:51 'inF1' (in 2-component vector of float)
@@ -156,7 +156,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:104 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:78 Function Parameters:
0:78 'inF0' (in 3-component vector of float)
0:78 'inF1' (in 3-component vector of float)
@@ -230,16 +230,16 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:105 Function Parameters:
-0:105 'inF0' (in 4-component vector of float)
-0:105 'inF1' (in 4-component vector of float)
-0:105 'inF2' (in 4-component vector of float)
-0:105 'inU0' (in 4-component vector of uint)
-0:105 'inU1' (in 4-component vector of uint)
+0:105 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:105 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:105 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:105 'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:105 'inU1' (layout(location=4 ) in 4-component vector of uint)
0:? Sequence
0:109 all (global bool)
-0:109 'inF0' (in 4-component vector of float)
+0:109 'inF0' (layout(location=0 ) in 4-component vector of float)
0:112 AtomicAdd (global void)
0:112 'gs_ua4' (global 4-component vector of uint)
0:112 'gs_ub4' (global 4-component vector of uint)
@@ -299,12 +299,15 @@
0:125 AtomicXor (temp 4-component vector of uint)
0:125 'gs_ua4' (global 4-component vector of uint)
0:125 'gs_ub4' (global 4-component vector of uint)
-0:128 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:128 Sequence
+0:128 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:128 Branch: Return
0:? Linker Objects
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
@@ -318,6 +321,12 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:? 'inU1' (layout(location=4 ) in 4-component vector of uint)
Linked compute stage:
@@ -326,7 +335,7 @@
Shader version: 450
local_size = (1, 1, 1)
0:? Sequence
-0:44 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
@@ -398,7 +407,7 @@
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
-0:50 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 1-component vector of float)
0:45 'inF1' (in 1-component vector of float)
@@ -407,7 +416,7 @@
0:47 Branch: Return with expression
0:47 Constant:
0:47 0.000000
-0:77 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:51 Function Parameters:
0:51 'inF0' (in 2-component vector of float)
0:51 'inF1' (in 2-component vector of float)
@@ -480,7 +489,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:104 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:78 Function Parameters:
0:78 'inF0' (in 3-component vector of float)
0:78 'inF1' (in 3-component vector of float)
@@ -554,16 +563,16 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:130 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:105 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:105 Function Parameters:
-0:105 'inF0' (in 4-component vector of float)
-0:105 'inF1' (in 4-component vector of float)
-0:105 'inF2' (in 4-component vector of float)
-0:105 'inU0' (in 4-component vector of uint)
-0:105 'inU1' (in 4-component vector of uint)
+0:105 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:105 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:105 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:105 'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:105 'inU1' (layout(location=4 ) in 4-component vector of uint)
0:? Sequence
0:109 all (global bool)
-0:109 'inF0' (in 4-component vector of float)
+0:109 'inF0' (layout(location=0 ) in 4-component vector of float)
0:112 AtomicAdd (global void)
0:112 'gs_ua4' (global 4-component vector of uint)
0:112 'gs_ub4' (global 4-component vector of uint)
@@ -623,12 +632,15 @@
0:125 AtomicXor (temp 4-component vector of uint)
0:125 'gs_ua4' (global 4-component vector of uint)
0:125 'gs_ub4' (global 4-component vector of uint)
-0:128 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:128 Sequence
+0:128 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:128 Branch: Return
0:? Linker Objects
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
@@ -642,17 +654,22 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:? 'inU1' (layout(location=4 ) in 4-component vector of uint)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 217
+// Id's are bound by 224
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "ComputeShaderFunction" 175
+ EntryPoint GLCompute 4 "ComputeShaderFunction" 175 215 219 220 222 223
ExecutionMode 4 LocalSize 1 1 1
- Source HLSL 450
Name 4 "ComputeShaderFunction"
Name 16 "ComputeShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
@@ -693,6 +710,17 @@
Name 181 "gs_ub4"
Name 185 "out_u4"
Name 193 "gs_uc4"
+ Name 215 "@entryPointOutput"
+ Name 219 "inF1"
+ Name 220 "inF2"
+ Name 222 "inU0"
+ Name 223 "inU1"
+ Decorate 175(inF0) Location 0
+ Decorate 215(@entryPointOutput) Location 0
+ Decorate 219(inF1) Location 1
+ Decorate 220(inF2) Location 2
+ Decorate 222(inU0) Location 3
+ Decorate 223(inU1) Location 4
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -741,8 +769,15 @@
181(gs_ub4): 179(ptr) Variable Private
184: TypePointer Function 178(ivec4)
193(gs_uc4): 179(ptr) Variable Private
- 214: 6(float) Constant 1082130432
- 215: 173(fvec4) ConstantComposite 128 129 169 214
+ 214: TypePointer Output 173(fvec4)
+215(@entryPointOutput): 214(ptr) Variable Output
+ 216: 6(float) Constant 1082130432
+ 217: 173(fvec4) ConstantComposite 128 129 169 216
+ 219(inF1): 174(ptr) Variable Input
+ 220(inF2): 174(ptr) Variable Input
+ 221: TypePointer Input 178(ivec4)
+ 222(inU0): 221(ptr) Variable Input
+ 223(inU1): 221(ptr) Variable Input
4(ComputeShaderFunction): 2 Function None 3
5: Label
185(out_u4): 184(ptr) Variable Function
@@ -785,7 +820,8 @@
212: 178(ivec4) Load 181(gs_ub4)
213: 178(ivec4) AtomicXor 180(gs_ua4) 55 56 212
Store 185(out_u4) 213
- ReturnValue 215
+ Store 215(@entryPointOutput) 217
+ Return
FunctionEnd
16(ComputeShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10
11(inF0): 7(ptr) FunctionParameter
diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 8bfc072..0dba032 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -2,35 +2,47 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
+0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
0:5 Function Parameters:
-0:5 'inDV1a' (in double)
-0:5 'inDV1b' (in double)
-0:5 'inDV1c' (in double)
-0:5 'inDV2' (in 2-component vector of double)
-0:5 'inDV3' (in 3-component vector of double)
-0:5 'inDV4' (in 4-component vector of double)
-0:5 'inU1a' (in uint)
-0:5 'inU1b' (in uint)
+0:5 'inDV1a' (layout(location=0 ) in double)
+0:5 'inDV1b' (layout(location=1 ) in double)
+0:5 'inDV1c' (layout(location=2 ) in double)
+0:5 'inDV2' (layout(location=3 ) in 2-component vector of double)
+0:5 'inDV3' (layout(location=4 ) in 3-component vector of double)
+0:5 'inDV4' (layout(location=6 ) in 4-component vector of double)
+0:5 'inU1a' (layout(location=8 ) in uint)
+0:5 'inU1b' (layout(location=9 ) in uint)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp double)
0:6 'r00' (temp double)
0:6 fma (global double)
-0:6 'inDV1a' (in double)
-0:6 'inDV1b' (in double)
-0:6 'inDV1c' (in double)
+0:6 'inDV1a' (layout(location=0 ) in double)
+0:6 'inDV1b' (layout(location=1 ) in double)
+0:6 'inDV1c' (layout(location=2 ) in double)
0:7 Sequence
0:7 move second child to first child (temp double)
0:7 'r01' (temp double)
0:7 uint64BitsToDouble (temp double)
0:7 Construct uvec2 (temp 2-component vector of uint)
-0:7 'inU1a' (in uint)
-0:7 'inU1b' (in uint)
-0:9 Branch: Return with expression
-0:9 Constant:
-0:9 0.000000
+0:7 'inU1a' (layout(location=8 ) in uint)
+0:7 'inU1b' (layout(location=9 ) in uint)
+0:9 Sequence
+0:9 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:9 Constant:
+0:9 0.000000
+0:9 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:? 'inDV1a' (layout(location=0 ) in double)
+0:? 'inDV1b' (layout(location=1 ) in double)
+0:? 'inDV1c' (layout(location=2 ) in double)
+0:? 'inDV2' (layout(location=3 ) in 2-component vector of double)
+0:? 'inDV3' (layout(location=4 ) in 3-component vector of double)
+0:? 'inDV4' (layout(location=6 ) in 4-component vector of double)
+0:? 'inU1a' (layout(location=8 ) in uint)
+0:? 'inU1b' (layout(location=9 ) in uint)
Linked fragment stage:
@@ -39,47 +51,58 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
+0:5 Function Definition: PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; (global float)
0:5 Function Parameters:
-0:5 'inDV1a' (in double)
-0:5 'inDV1b' (in double)
-0:5 'inDV1c' (in double)
-0:5 'inDV2' (in 2-component vector of double)
-0:5 'inDV3' (in 3-component vector of double)
-0:5 'inDV4' (in 4-component vector of double)
-0:5 'inU1a' (in uint)
-0:5 'inU1b' (in uint)
+0:5 'inDV1a' (layout(location=0 ) in double)
+0:5 'inDV1b' (layout(location=1 ) in double)
+0:5 'inDV1c' (layout(location=2 ) in double)
+0:5 'inDV2' (layout(location=3 ) in 2-component vector of double)
+0:5 'inDV3' (layout(location=4 ) in 3-component vector of double)
+0:5 'inDV4' (layout(location=6 ) in 4-component vector of double)
+0:5 'inU1a' (layout(location=8 ) in uint)
+0:5 'inU1b' (layout(location=9 ) in uint)
0:? Sequence
0:6 Sequence
0:6 move second child to first child (temp double)
0:6 'r00' (temp double)
0:6 fma (global double)
-0:6 'inDV1a' (in double)
-0:6 'inDV1b' (in double)
-0:6 'inDV1c' (in double)
+0:6 'inDV1a' (layout(location=0 ) in double)
+0:6 'inDV1b' (layout(location=1 ) in double)
+0:6 'inDV1c' (layout(location=2 ) in double)
0:7 Sequence
0:7 move second child to first child (temp double)
0:7 'r01' (temp double)
0:7 uint64BitsToDouble (temp double)
0:7 Construct uvec2 (temp 2-component vector of uint)
-0:7 'inU1a' (in uint)
-0:7 'inU1b' (in uint)
-0:9 Branch: Return with expression
-0:9 Constant:
-0:9 0.000000
+0:7 'inU1a' (layout(location=8 ) in uint)
+0:7 'inU1b' (layout(location=9 ) in uint)
+0:9 Sequence
+0:9 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:9 Constant:
+0:9 0.000000
+0:9 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:? 'inDV1a' (layout(location=0 ) in double)
+0:? 'inDV1b' (layout(location=1 ) in double)
+0:? 'inDV1c' (layout(location=2 ) in double)
+0:? 'inDV2' (layout(location=3 ) in 2-component vector of double)
+0:? 'inDV3' (layout(location=4 ) in 3-component vector of double)
+0:? 'inDV4' (layout(location=6 ) in 4-component vector of double)
+0:? 'inU1a' (layout(location=8 ) in uint)
+0:? 'inU1b' (layout(location=9 ) in uint)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 30
+// Id's are bound by 41
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 10 12 14 20 22
+ EntryPoint Fragment 4 "PixelShaderFunction" 10 12 14 20 22 29 34 37 40
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "r00"
Name 10 "inDV1a"
@@ -88,6 +111,19 @@
Name 17 "r01"
Name 20 "inU1a"
Name 22 "inU1b"
+ Name 29 "@entryPointOutput"
+ Name 34 "inDV2"
+ Name 37 "inDV3"
+ Name 40 "inDV4"
+ Decorate 10(inDV1a) Location 0
+ Decorate 12(inDV1b) Location 1
+ Decorate 14(inDV1c) Location 2
+ Decorate 20(inU1a) Location 8
+ Decorate 22(inU1b) Location 9
+ Decorate 29(@entryPointOutput) Location 0
+ Decorate 34(inDV2) Location 3
+ Decorate 37(inDV3) Location 4
+ Decorate 40(inDV4) Location 6
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 64
@@ -102,7 +138,18 @@
22(inU1b): 19(ptr) Variable Input
24: TypeVector 18(int) 2
27: TypeFloat 32
- 28: 27(float) Constant 0
+ 28: TypePointer Output 27(float)
+29(@entryPointOutput): 28(ptr) Variable Output
+ 30: 27(float) Constant 0
+ 32: TypeVector 6(float) 2
+ 33: TypePointer Input 32(fvec2)
+ 34(inDV2): 33(ptr) Variable Input
+ 35: TypeVector 6(float) 3
+ 36: TypePointer Input 35(fvec3)
+ 37(inDV3): 36(ptr) Variable Input
+ 38: TypeVector 6(float) 4
+ 39: TypePointer Input 38(fvec4)
+ 40(inDV4): 39(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
8(r00): 7(ptr) Variable Function
@@ -117,5 +164,6 @@
25: 24(ivec2) CompositeConstruct 21 23
26: 6(float) Bitcast 25
Store 17(r01) 26
- ReturnValue 28
+ Store 29(@entryPointOutput) 30
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
index f1b6411..a23a883 100644
--- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
@@ -2,41 +2,41 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
+0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
0:3 Function Parameters:
-0:3 'inF1' (in float)
-0:3 'inF2' (in 2-component vector of float)
-0:3 'inF3' (in 3-component vector of float)
-0:3 'inF4' (in 4-component vector of float)
-0:3 'inI2' (in 2-component vector of int)
+0:3 'inF1' (layout(location=0 ) in float)
+0:3 'inF2' (layout(location=1 ) in 2-component vector of float)
+0:3 'inF3' (layout(location=2 ) in 3-component vector of float)
+0:3 'inF4' (layout(location=3 ) in 4-component vector of float)
+0:3 'inI2' (layout(location=4 ) in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
-0:4 'inF1' (in float)
+0:4 'inF1' (layout(location=0 ) in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
-0:5 'inF2' (in 2-component vector of float)
+0:5 'inF2' (layout(location=1 ) in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
-0:6 'inF3' (in 3-component vector of float)
+0:6 'inF3' (layout(location=2 ) in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
-0:7 'inF4' (in 4-component vector of float)
+0:7 'inF4' (layout(location=3 ) in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
-0:9 'inF1' (in float)
+0:9 'inF1' (layout(location=0 ) in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
-0:9 'inI2' (in 2-component vector of int)
+0:9 'inI2' (layout(location=4 ) in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
@@ -44,6 +44,11 @@
0:9 Constant:
0:9 0.062500
0:? Linker Objects
+0:? 'inF1' (layout(location=0 ) in float)
+0:? 'inF2' (layout(location=1 ) in 2-component vector of float)
+0:? 'inF3' (layout(location=2 ) in 3-component vector of float)
+0:? 'inF4' (layout(location=3 ) in 4-component vector of float)
+0:? 'inI2' (layout(location=4 ) in 2-component vector of int)
Linked fragment stage:
@@ -52,41 +57,41 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:11 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
+0:3 Function Definition: main(f1;vf2;vf3;vf4;vi2; (global void)
0:3 Function Parameters:
-0:3 'inF1' (in float)
-0:3 'inF2' (in 2-component vector of float)
-0:3 'inF3' (in 3-component vector of float)
-0:3 'inF4' (in 4-component vector of float)
-0:3 'inI2' (in 2-component vector of int)
+0:3 'inF1' (layout(location=0 ) in float)
+0:3 'inF2' (layout(location=1 ) in 2-component vector of float)
+0:3 'inF3' (layout(location=2 ) in 3-component vector of float)
+0:3 'inF4' (layout(location=3 ) in 4-component vector of float)
+0:3 'inI2' (layout(location=4 ) in 2-component vector of int)
0:? Sequence
0:4 interpolateAtOffset (temp float)
-0:4 'inF1' (in float)
+0:4 'inF1' (layout(location=0 ) in float)
0:? Constant:
0:? -0.500000
0:? -0.062500
0:5 interpolateAtOffset (temp 2-component vector of float)
-0:5 'inF2' (in 2-component vector of float)
+0:5 'inF2' (layout(location=1 ) in 2-component vector of float)
0:? Constant:
0:? 0.000000
0:? 0.062500
0:6 interpolateAtOffset (temp 3-component vector of float)
-0:6 'inF3' (in 3-component vector of float)
+0:6 'inF3' (layout(location=2 ) in 3-component vector of float)
0:? Constant:
0:? 0.187500
0:? -0.375000
0:7 interpolateAtOffset (temp 4-component vector of float)
-0:7 'inF4' (in 4-component vector of float)
+0:7 'inF4' (layout(location=3 ) in 4-component vector of float)
0:? Constant:
0:? 0.437500
0:? -0.500000
0:9 interpolateAtOffset (temp float)
-0:9 'inF1' (in float)
+0:9 'inF1' (layout(location=0 ) in float)
0:9 vector-scale (temp 2-component vector of float)
0:9 Convert int to float (temp 2-component vector of float)
0:9 right-shift (temp 2-component vector of int)
0:9 left-shift (temp 2-component vector of int)
-0:9 'inI2' (in 2-component vector of int)
+0:9 'inI2' (layout(location=4 ) in 2-component vector of int)
0:9 Constant:
0:9 28 (const int)
0:9 Constant:
@@ -94,6 +99,11 @@
0:9 Constant:
0:9 0.062500
0:? Linker Objects
+0:? 'inF1' (layout(location=0 ) in float)
+0:? 'inF2' (layout(location=1 ) in 2-component vector of float)
+0:? 'inF3' (layout(location=2 ) in 3-component vector of float)
+0:? 'inF4' (layout(location=3 ) in 4-component vector of float)
+0:? 'inI2' (layout(location=4 ) in 2-component vector of int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -105,13 +115,17 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 8 15 22 29 36
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "inF1"
Name 15 "inF2"
Name 22 "inF3"
Name 29 "inF4"
Name 36 "inI2"
+ Decorate 8(inF1) Location 0
+ Decorate 15(inF2) Location 1
+ Decorate 22(inF3) Location 2
+ Decorate 29(inF4) Location 3
+ Decorate 36(inI2) Location 4
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 7340531..21daced 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -9,7 +9,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:8 Function Definition: PixelShaderFunctionS(f1; (global float)
+0:2 Function Definition: PixelShaderFunctionS(f1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
@@ -19,14 +19,14 @@
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
-0:14 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
+0:9 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
-0:21 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
+0:15 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
@@ -37,7 +37,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:28 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
+0:22 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
@@ -49,20 +49,25 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:35 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:29 Function Parameters:
-0:29 'inF0' (in 4-component vector of float)
+0:29 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
-0:30 'inF0' (in 4-component vector of float)
-0:32 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:30 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:32 Sequence
+0:32 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:32 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -71,7 +76,7 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:8 Function Definition: PixelShaderFunctionS(f1; (global float)
+0:2 Function Definition: PixelShaderFunctionS(f1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
@@ -81,14 +86,14 @@
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
-0:14 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
+0:9 Function Definition: PixelShaderFunction1(vf1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
-0:21 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
+0:15 Function Definition: PixelShaderFunction2(vf2; (global 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:? Sequence
@@ -99,7 +104,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:28 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
+0:22 Function Definition: PixelShaderFunction3(vf3; (global 3-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in 3-component vector of float)
0:? Sequence
@@ -111,19 +116,24 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:35 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:29 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:29 Function Parameters:
-0:29 'inF0' (in 4-component vector of float)
+0:29 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:30 ERROR: Bad unary op
(global 4-component vector of uint)
-0:30 'inF0' (in 4-component vector of float)
-0:32 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:30 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:32 Sequence
+0:32 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:32 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index f4e2434..151bdb4 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:88 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
@@ -339,7 +339,7 @@
0:85 Branch: Return with expression
0:85 Constant:
0:85 0.000000
-0:94 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:89 Function Parameters:
0:89 'inF0' (in 1-component vector of float)
0:89 'inF1' (in 1-component vector of float)
@@ -348,7 +348,7 @@
0:91 Branch: Return with expression
0:91 Constant:
0:91 0.000000
-0:177 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:95 Function Parameters:
0:95 'inF0' (in 2-component vector of float)
0:95 'inF1' (in 2-component vector of float)
@@ -733,7 +733,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:259 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:178 Function Parameters:
0:178 'inF0' (in 3-component vector of float)
0:178 'inF1' (in 3-component vector of float)
@@ -1138,7 +1138,7 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:400 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:260 Function Parameters:
0:260 'inF0' (in 4-component vector of float)
0:260 'inF1' (in 4-component vector of float)
@@ -1558,7 +1558,7 @@
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:409 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:401 Function Parameters:
0:401 'inF0' (in 2X2 matrix of float)
0:401 'inF1' (in 2X2 matrix of float)
@@ -1846,7 +1846,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:418 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:410 Function Parameters:
0:410 'inF0' (in 3X3 matrix of float)
0:410 'inF1' (in 3X3 matrix of float)
@@ -2144,7 +2144,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:439 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:419 Function Parameters:
0:419 'inF0' (in 4X4 matrix of float)
0:419 'inF1' (in 4X4 matrix of float)
@@ -2456,7 +2456,7 @@
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:446 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
0:442 Function Parameters:
0:442 'inF0' (in float)
0:442 'inF1' (in float)
@@ -2469,20 +2469,20 @@
0:443 move second child to first child (temp float)
0:443 'r0' (temp float)
0:443 component-wise multiply (temp float)
-0:443 'inF0' (in float)
0:443 'inF1' (in float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r1' (temp 2-component vector of float)
0:443 vector-scale (temp 2-component vector of float)
-0:443 'inFV0' (in 2-component vector of float)
0:443 'inF0' (in float)
+0:443 'inFV0' (in 2-component vector of float)
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r2' (temp 2-component vector of float)
0:443 vector-scale (temp 2-component vector of float)
-0:443 'inF0' (in float)
0:443 'inFV0' (in 2-component vector of float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp float)
0:443 'r3' (temp float)
@@ -2492,34 +2492,34 @@
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r4' (temp 2-component vector of float)
-0:443 matrix-times-vector (temp 2-component vector of float)
-0:443 'inFM0' (in 2X2 matrix of float)
-0:443 'inFV0' (in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child (temp 2-component vector of float)
-0:443 'r5' (temp 2-component vector of float)
0:443 vector-times-matrix (temp 2-component vector of float)
0:443 'inFV0' (in 2-component vector of float)
0:443 'inFM0' (in 2X2 matrix of float)
0:443 Sequence
+0:443 move second child to first child (temp 2-component vector of float)
+0:443 'r5' (temp 2-component vector of float)
+0:443 matrix-times-vector (temp 2-component vector of float)
+0:443 'inFM0' (in 2X2 matrix of float)
+0:443 'inFV0' (in 2-component vector of float)
+0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r6' (temp 2X2 matrix of float)
0:443 matrix-scale (temp 2X2 matrix of float)
-0:443 'inFM0' (in 2X2 matrix of float)
0:443 'inF0' (in float)
+0:443 'inFM0' (in 2X2 matrix of float)
0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r7' (temp 2X2 matrix of float)
0:443 matrix-scale (temp 2X2 matrix of float)
-0:443 'inF0' (in float)
0:443 'inFM0' (in 2X2 matrix of float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r8' (temp 2X2 matrix of float)
0:443 matrix-multiply (temp 2X2 matrix of float)
-0:443 'inFM0' (in 2X2 matrix of float)
0:443 'inFM1' (in 2X2 matrix of float)
-0:453 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:443 'inFM0' (in 2X2 matrix of float)
+0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:449 Function Parameters:
0:449 'inF0' (in float)
0:449 'inF1' (in float)
@@ -2532,20 +2532,20 @@
0:450 move second child to first child (temp float)
0:450 'r0' (temp float)
0:450 component-wise multiply (temp float)
-0:450 'inF0' (in float)
0:450 'inF1' (in float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r1' (temp 3-component vector of float)
0:450 vector-scale (temp 3-component vector of float)
-0:450 'inFV0' (in 3-component vector of float)
0:450 'inF0' (in float)
+0:450 'inFV0' (in 3-component vector of float)
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r2' (temp 3-component vector of float)
0:450 vector-scale (temp 3-component vector of float)
-0:450 'inF0' (in float)
0:450 'inFV0' (in 3-component vector of float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp float)
0:450 'r3' (temp float)
@@ -2555,34 +2555,34 @@
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r4' (temp 3-component vector of float)
-0:450 matrix-times-vector (temp 3-component vector of float)
-0:450 'inFM0' (in 3X3 matrix of float)
-0:450 'inFV0' (in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child (temp 3-component vector of float)
-0:450 'r5' (temp 3-component vector of float)
0:450 vector-times-matrix (temp 3-component vector of float)
0:450 'inFV0' (in 3-component vector of float)
0:450 'inFM0' (in 3X3 matrix of float)
0:450 Sequence
+0:450 move second child to first child (temp 3-component vector of float)
+0:450 'r5' (temp 3-component vector of float)
+0:450 matrix-times-vector (temp 3-component vector of float)
+0:450 'inFM0' (in 3X3 matrix of float)
+0:450 'inFV0' (in 3-component vector of float)
+0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r6' (temp 3X3 matrix of float)
0:450 matrix-scale (temp 3X3 matrix of float)
-0:450 'inFM0' (in 3X3 matrix of float)
0:450 'inF0' (in float)
+0:450 'inFM0' (in 3X3 matrix of float)
0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r7' (temp 3X3 matrix of float)
0:450 matrix-scale (temp 3X3 matrix of float)
-0:450 'inF0' (in float)
0:450 'inFM0' (in 3X3 matrix of float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r8' (temp 3X3 matrix of float)
0:450 matrix-multiply (temp 3X3 matrix of float)
-0:450 'inFM0' (in 3X3 matrix of float)
0:450 'inFM1' (in 3X3 matrix of float)
-0:461 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:450 'inFM0' (in 3X3 matrix of float)
+0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:456 Function Parameters:
0:456 'inF0' (in float)
0:456 'inF1' (in float)
@@ -2595,20 +2595,20 @@
0:457 move second child to first child (temp float)
0:457 'r0' (temp float)
0:457 component-wise multiply (temp float)
-0:457 'inF0' (in float)
0:457 'inF1' (in float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r1' (temp 4-component vector of float)
0:457 vector-scale (temp 4-component vector of float)
-0:457 'inFV0' (in 4-component vector of float)
0:457 'inF0' (in float)
+0:457 'inFV0' (in 4-component vector of float)
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r2' (temp 4-component vector of float)
0:457 vector-scale (temp 4-component vector of float)
-0:457 'inF0' (in float)
0:457 'inFV0' (in 4-component vector of float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp float)
0:457 'r3' (temp float)
@@ -2618,75 +2618,75 @@
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r4' (temp 4-component vector of float)
-0:457 matrix-times-vector (temp 4-component vector of float)
-0:457 'inFM0' (in 4X4 matrix of float)
-0:457 'inFV0' (in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child (temp 4-component vector of float)
-0:457 'r5' (temp 4-component vector of float)
0:457 vector-times-matrix (temp 4-component vector of float)
0:457 'inFV0' (in 4-component vector of float)
0:457 'inFM0' (in 4X4 matrix of float)
0:457 Sequence
+0:457 move second child to first child (temp 4-component vector of float)
+0:457 'r5' (temp 4-component vector of float)
+0:457 matrix-times-vector (temp 4-component vector of float)
+0:457 'inFM0' (in 4X4 matrix of float)
+0:457 'inFV0' (in 4-component vector of float)
+0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r6' (temp 4X4 matrix of float)
0:457 matrix-scale (temp 4X4 matrix of float)
-0:457 'inFM0' (in 4X4 matrix of float)
0:457 'inF0' (in float)
+0:457 'inFM0' (in 4X4 matrix of float)
0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r7' (temp 4X4 matrix of float)
0:457 matrix-scale (temp 4X4 matrix of float)
-0:457 'inF0' (in float)
0:457 'inFM0' (in 4X4 matrix of float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r8' (temp 4X4 matrix of float)
0:457 matrix-multiply (temp 4X4 matrix of float)
-0:457 'inFM0' (in 4X4 matrix of float)
0:457 'inFM1' (in 4X4 matrix of float)
-0:485 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:457 'inFM0' (in 4X4 matrix of float)
+0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:466 Function Parameters:
0:466 'inF0' (in float)
0:466 'inF1' (in float)
0:466 'inFV2' (in 2-component vector of float)
0:466 'inFV3' (in 3-component vector of float)
-0:466 'inFM2x3' (in 3X2 matrix of float)
-0:466 'inFM3x2' (in 2X3 matrix of float)
+0:466 'inFM2x3' (in 2X3 matrix of float)
+0:466 'inFM3x2' (in 3X2 matrix of float)
0:466 'inFM3x3' (in 3X3 matrix of float)
-0:466 'inFM3x4' (in 4X3 matrix of float)
-0:466 'inFM2x4' (in 4X2 matrix of float)
+0:466 'inFM3x4' (in 3X4 matrix of float)
+0:466 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence
0:467 Sequence
0:467 move second child to first child (temp float)
0:467 'r00' (temp float)
0:467 component-wise multiply (temp float)
-0:467 'inF0' (in float)
0:467 'inF1' (in float)
+0:467 'inF0' (in float)
0:468 Sequence
0:468 move second child to first child (temp 2-component vector of float)
0:468 'r01' (temp 2-component vector of float)
0:468 vector-scale (temp 2-component vector of float)
-0:468 'inFV2' (in 2-component vector of float)
0:468 'inF0' (in float)
+0:468 'inFV2' (in 2-component vector of float)
0:469 Sequence
0:469 move second child to first child (temp 3-component vector of float)
0:469 'r02' (temp 3-component vector of float)
0:469 vector-scale (temp 3-component vector of float)
-0:469 'inFV3' (in 3-component vector of float)
0:469 'inF0' (in float)
+0:469 'inFV3' (in 3-component vector of float)
0:470 Sequence
0:470 move second child to first child (temp 2-component vector of float)
0:470 'r03' (temp 2-component vector of float)
0:470 vector-scale (temp 2-component vector of float)
-0:470 'inF0' (in float)
0:470 'inFV2' (in 2-component vector of float)
+0:470 'inF0' (in float)
0:471 Sequence
0:471 move second child to first child (temp 3-component vector of float)
0:471 'r04' (temp 3-component vector of float)
0:471 vector-scale (temp 3-component vector of float)
-0:471 'inF0' (in float)
0:471 'inFV3' (in 3-component vector of float)
+0:471 'inF0' (in float)
0:472 Sequence
0:472 move second child to first child (temp float)
0:472 'r05' (temp float)
@@ -2702,63 +2702,85 @@
0:474 Sequence
0:474 move second child to first child (temp 3-component vector of float)
0:474 'r07' (temp 3-component vector of float)
-0:474 vector-times-matrix (temp 3-component vector of float)
+0:474 matrix-times-vector (temp 3-component vector of float)
+0:474 'inFM2x3' (in 2X3 matrix of float)
0:474 'inFV2' (in 2-component vector of float)
-0:474 'inFM2x3' (in 3X2 matrix of float)
0:475 Sequence
0:475 move second child to first child (temp 2-component vector of float)
0:475 'r08' (temp 2-component vector of float)
-0:475 vector-times-matrix (temp 2-component vector of float)
+0:475 matrix-times-vector (temp 2-component vector of float)
+0:475 'inFM3x2' (in 3X2 matrix of float)
0:475 'inFV3' (in 3-component vector of float)
-0:475 'inFM3x2' (in 2X3 matrix of float)
0:476 Sequence
0:476 move second child to first child (temp 2-component vector of float)
0:476 'r09' (temp 2-component vector of float)
-0:476 matrix-times-vector (temp 2-component vector of float)
-0:476 'inFM2x3' (in 3X2 matrix of float)
+0:476 vector-times-matrix (temp 2-component vector of float)
0:476 'inFV3' (in 3-component vector of float)
+0:476 'inFM2x3' (in 2X3 matrix of float)
0:477 Sequence
0:477 move second child to first child (temp 3-component vector of float)
0:477 'r10' (temp 3-component vector of float)
-0:477 matrix-times-vector (temp 3-component vector of float)
-0:477 'inFM3x2' (in 2X3 matrix of float)
+0:477 vector-times-matrix (temp 3-component vector of float)
0:477 'inFV2' (in 2-component vector of float)
+0:477 'inFM3x2' (in 3X2 matrix of float)
0:478 Sequence
-0:478 move second child to first child (temp 3X2 matrix of float)
-0:478 'r11' (temp 3X2 matrix of float)
-0:478 matrix-scale (temp 3X2 matrix of float)
-0:478 'inFM2x3' (in 3X2 matrix of float)
+0:478 move second child to first child (temp 2X3 matrix of float)
+0:478 'r11' (temp 2X3 matrix of float)
+0:478 matrix-scale (temp 2X3 matrix of float)
0:478 'inF0' (in float)
+0:478 'inFM2x3' (in 2X3 matrix of float)
0:479 Sequence
-0:479 move second child to first child (temp 2X3 matrix of float)
-0:479 'r12' (temp 2X3 matrix of float)
-0:479 matrix-scale (temp 2X3 matrix of float)
-0:479 'inFM3x2' (in 2X3 matrix of float)
+0:479 move second child to first child (temp 3X2 matrix of float)
+0:479 'r12' (temp 3X2 matrix of float)
+0:479 matrix-scale (temp 3X2 matrix of float)
0:479 'inF0' (in float)
+0:479 'inFM3x2' (in 3X2 matrix of float)
0:480 Sequence
0:480 move second child to first child (temp 2X2 matrix of float)
0:480 'r13' (temp 2X2 matrix of float)
0:480 matrix-multiply (temp 2X2 matrix of float)
-0:480 'inFM2x3' (in 3X2 matrix of float)
-0:480 'inFM3x2' (in 2X3 matrix of float)
+0:480 'inFM3x2' (in 3X2 matrix of float)
+0:480 'inFM2x3' (in 2X3 matrix of float)
0:481 Sequence
-0:481 move second child to first child (temp 3X2 matrix of float)
-0:481 'r14' (temp 3X2 matrix of float)
-0:481 matrix-multiply (temp 3X2 matrix of float)
-0:481 'inFM2x3' (in 3X2 matrix of float)
+0:481 move second child to first child (temp 2X3 matrix of float)
+0:481 'r14' (temp 2X3 matrix of float)
+0:481 matrix-multiply (temp 2X3 matrix of float)
0:481 'inFM3x3' (in 3X3 matrix of float)
+0:481 'inFM2x3' (in 2X3 matrix of float)
0:482 Sequence
-0:482 move second child to first child (temp 4X2 matrix of float)
-0:482 'r15' (temp 4X2 matrix of float)
-0:482 matrix-multiply (temp 4X2 matrix of float)
-0:482 'inFM2x3' (in 3X2 matrix of float)
-0:482 'inFM3x4' (in 4X3 matrix of float)
+0:482 move second child to first child (temp 2X4 matrix of float)
+0:482 'r15' (temp 2X4 matrix of float)
+0:482 matrix-multiply (temp 2X4 matrix of float)
+0:482 'inFM3x4' (in 3X4 matrix of float)
+0:482 'inFM2x3' (in 2X3 matrix of float)
0:483 Sequence
-0:483 move second child to first child (temp 4X3 matrix of float)
-0:483 'r16' (temp 4X3 matrix of float)
-0:483 matrix-multiply (temp 4X3 matrix of float)
-0:483 'inFM3x2' (in 2X3 matrix of float)
-0:483 'inFM2x4' (in 4X2 matrix of float)
+0:483 move second child to first child (temp 3X4 matrix of float)
+0:483 'r16' (temp 3X4 matrix of float)
+0:483 matrix-multiply (temp 3X4 matrix of float)
+0:483 'inFM2x4' (in 2X4 matrix of float)
+0:483 'inFM3x2' (in 3X2 matrix of float)
+0:489 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489 Function Parameters:
+0:? Sequence
+0:491 move second child to first child (temp 4-component vector of float)
+0:491 color: direct index for structure (temp 4-component vector of float)
+0:491 'ps_output' (temp structure{temp 4-component vector of float color})
+0:491 Constant:
+0:491 0 (const int)
+0:491 Constant:
+0:491 1.000000
+0:491 1.000000
+0:491 1.000000
+0:491 1.000000
+0:? Sequence
+0:? Sequence
+0:492 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:492 color: direct index for structure (temp 4-component vector of float)
+0:492 'ps_output' (temp structure{temp 4-component vector of float color})
+0:492 Constant:
+0:492 0 (const int)
+0:492 Branch: Return
0:? Linker Objects
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
@@ -2772,6 +2794,7 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
@@ -2780,7 +2803,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:88 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:17 Function Definition: PixelShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:17 Function Parameters:
0:17 'inF0' (in float)
0:17 'inF1' (in float)
@@ -3117,7 +3140,7 @@
0:85 Branch: Return with expression
0:85 Constant:
0:85 0.000000
-0:94 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:89 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:89 Function Parameters:
0:89 'inF0' (in 1-component vector of float)
0:89 'inF1' (in 1-component vector of float)
@@ -3126,7 +3149,7 @@
0:91 Branch: Return with expression
0:91 Constant:
0:91 0.000000
-0:177 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:95 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:95 Function Parameters:
0:95 'inF0' (in 2-component vector of float)
0:95 'inF1' (in 2-component vector of float)
@@ -3511,7 +3534,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:259 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:178 Function Parameters:
0:178 'inF0' (in 3-component vector of float)
0:178 'inF1' (in 3-component vector of float)
@@ -3916,7 +3939,7 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:400 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:260 Function Parameters:
0:260 'inF0' (in 4-component vector of float)
0:260 'inF1' (in 4-component vector of float)
@@ -4336,7 +4359,7 @@
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:409 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:401 Function Parameters:
0:401 'inF0' (in 2X2 matrix of float)
0:401 'inF1' (in 2X2 matrix of float)
@@ -4624,7 +4647,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:418 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:410 Function Parameters:
0:410 'inF0' (in 3X3 matrix of float)
0:410 'inF1' (in 3X3 matrix of float)
@@ -4922,7 +4945,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:439 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:419 Function Parameters:
0:419 'inF0' (in 4X4 matrix of float)
0:419 'inF1' (in 4X4 matrix of float)
@@ -5234,7 +5257,7 @@
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:446 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
0:442 Function Parameters:
0:442 'inF0' (in float)
0:442 'inF1' (in float)
@@ -5247,20 +5270,20 @@
0:443 move second child to first child (temp float)
0:443 'r0' (temp float)
0:443 component-wise multiply (temp float)
-0:443 'inF0' (in float)
0:443 'inF1' (in float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r1' (temp 2-component vector of float)
0:443 vector-scale (temp 2-component vector of float)
-0:443 'inFV0' (in 2-component vector of float)
0:443 'inF0' (in float)
+0:443 'inFV0' (in 2-component vector of float)
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r2' (temp 2-component vector of float)
0:443 vector-scale (temp 2-component vector of float)
-0:443 'inF0' (in float)
0:443 'inFV0' (in 2-component vector of float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp float)
0:443 'r3' (temp float)
@@ -5270,34 +5293,34 @@
0:443 Sequence
0:443 move second child to first child (temp 2-component vector of float)
0:443 'r4' (temp 2-component vector of float)
-0:443 matrix-times-vector (temp 2-component vector of float)
-0:443 'inFM0' (in 2X2 matrix of float)
-0:443 'inFV0' (in 2-component vector of float)
-0:443 Sequence
-0:443 move second child to first child (temp 2-component vector of float)
-0:443 'r5' (temp 2-component vector of float)
0:443 vector-times-matrix (temp 2-component vector of float)
0:443 'inFV0' (in 2-component vector of float)
0:443 'inFM0' (in 2X2 matrix of float)
0:443 Sequence
+0:443 move second child to first child (temp 2-component vector of float)
+0:443 'r5' (temp 2-component vector of float)
+0:443 matrix-times-vector (temp 2-component vector of float)
+0:443 'inFM0' (in 2X2 matrix of float)
+0:443 'inFV0' (in 2-component vector of float)
+0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r6' (temp 2X2 matrix of float)
0:443 matrix-scale (temp 2X2 matrix of float)
-0:443 'inFM0' (in 2X2 matrix of float)
0:443 'inF0' (in float)
+0:443 'inFM0' (in 2X2 matrix of float)
0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r7' (temp 2X2 matrix of float)
0:443 matrix-scale (temp 2X2 matrix of float)
-0:443 'inF0' (in float)
0:443 'inFM0' (in 2X2 matrix of float)
+0:443 'inF0' (in float)
0:443 Sequence
0:443 move second child to first child (temp 2X2 matrix of float)
0:443 'r8' (temp 2X2 matrix of float)
0:443 matrix-multiply (temp 2X2 matrix of float)
-0:443 'inFM0' (in 2X2 matrix of float)
0:443 'inFM1' (in 2X2 matrix of float)
-0:453 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:443 'inFM0' (in 2X2 matrix of float)
+0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:449 Function Parameters:
0:449 'inF0' (in float)
0:449 'inF1' (in float)
@@ -5310,20 +5333,20 @@
0:450 move second child to first child (temp float)
0:450 'r0' (temp float)
0:450 component-wise multiply (temp float)
-0:450 'inF0' (in float)
0:450 'inF1' (in float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r1' (temp 3-component vector of float)
0:450 vector-scale (temp 3-component vector of float)
-0:450 'inFV0' (in 3-component vector of float)
0:450 'inF0' (in float)
+0:450 'inFV0' (in 3-component vector of float)
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r2' (temp 3-component vector of float)
0:450 vector-scale (temp 3-component vector of float)
-0:450 'inF0' (in float)
0:450 'inFV0' (in 3-component vector of float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp float)
0:450 'r3' (temp float)
@@ -5333,34 +5356,34 @@
0:450 Sequence
0:450 move second child to first child (temp 3-component vector of float)
0:450 'r4' (temp 3-component vector of float)
-0:450 matrix-times-vector (temp 3-component vector of float)
-0:450 'inFM0' (in 3X3 matrix of float)
-0:450 'inFV0' (in 3-component vector of float)
-0:450 Sequence
-0:450 move second child to first child (temp 3-component vector of float)
-0:450 'r5' (temp 3-component vector of float)
0:450 vector-times-matrix (temp 3-component vector of float)
0:450 'inFV0' (in 3-component vector of float)
0:450 'inFM0' (in 3X3 matrix of float)
0:450 Sequence
+0:450 move second child to first child (temp 3-component vector of float)
+0:450 'r5' (temp 3-component vector of float)
+0:450 matrix-times-vector (temp 3-component vector of float)
+0:450 'inFM0' (in 3X3 matrix of float)
+0:450 'inFV0' (in 3-component vector of float)
+0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r6' (temp 3X3 matrix of float)
0:450 matrix-scale (temp 3X3 matrix of float)
-0:450 'inFM0' (in 3X3 matrix of float)
0:450 'inF0' (in float)
+0:450 'inFM0' (in 3X3 matrix of float)
0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r7' (temp 3X3 matrix of float)
0:450 matrix-scale (temp 3X3 matrix of float)
-0:450 'inF0' (in float)
0:450 'inFM0' (in 3X3 matrix of float)
+0:450 'inF0' (in float)
0:450 Sequence
0:450 move second child to first child (temp 3X3 matrix of float)
0:450 'r8' (temp 3X3 matrix of float)
0:450 matrix-multiply (temp 3X3 matrix of float)
-0:450 'inFM0' (in 3X3 matrix of float)
0:450 'inFM1' (in 3X3 matrix of float)
-0:461 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:450 'inFM0' (in 3X3 matrix of float)
+0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:456 Function Parameters:
0:456 'inF0' (in float)
0:456 'inF1' (in float)
@@ -5373,20 +5396,20 @@
0:457 move second child to first child (temp float)
0:457 'r0' (temp float)
0:457 component-wise multiply (temp float)
-0:457 'inF0' (in float)
0:457 'inF1' (in float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r1' (temp 4-component vector of float)
0:457 vector-scale (temp 4-component vector of float)
-0:457 'inFV0' (in 4-component vector of float)
0:457 'inF0' (in float)
+0:457 'inFV0' (in 4-component vector of float)
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r2' (temp 4-component vector of float)
0:457 vector-scale (temp 4-component vector of float)
-0:457 'inF0' (in float)
0:457 'inFV0' (in 4-component vector of float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp float)
0:457 'r3' (temp float)
@@ -5396,75 +5419,75 @@
0:457 Sequence
0:457 move second child to first child (temp 4-component vector of float)
0:457 'r4' (temp 4-component vector of float)
-0:457 matrix-times-vector (temp 4-component vector of float)
-0:457 'inFM0' (in 4X4 matrix of float)
-0:457 'inFV0' (in 4-component vector of float)
-0:457 Sequence
-0:457 move second child to first child (temp 4-component vector of float)
-0:457 'r5' (temp 4-component vector of float)
0:457 vector-times-matrix (temp 4-component vector of float)
0:457 'inFV0' (in 4-component vector of float)
0:457 'inFM0' (in 4X4 matrix of float)
0:457 Sequence
+0:457 move second child to first child (temp 4-component vector of float)
+0:457 'r5' (temp 4-component vector of float)
+0:457 matrix-times-vector (temp 4-component vector of float)
+0:457 'inFM0' (in 4X4 matrix of float)
+0:457 'inFV0' (in 4-component vector of float)
+0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r6' (temp 4X4 matrix of float)
0:457 matrix-scale (temp 4X4 matrix of float)
-0:457 'inFM0' (in 4X4 matrix of float)
0:457 'inF0' (in float)
+0:457 'inFM0' (in 4X4 matrix of float)
0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r7' (temp 4X4 matrix of float)
0:457 matrix-scale (temp 4X4 matrix of float)
-0:457 'inF0' (in float)
0:457 'inFM0' (in 4X4 matrix of float)
+0:457 'inF0' (in float)
0:457 Sequence
0:457 move second child to first child (temp 4X4 matrix of float)
0:457 'r8' (temp 4X4 matrix of float)
0:457 matrix-multiply (temp 4X4 matrix of float)
-0:457 'inFM0' (in 4X4 matrix of float)
0:457 'inFM1' (in 4X4 matrix of float)
-0:485 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:457 'inFM0' (in 4X4 matrix of float)
+0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:466 Function Parameters:
0:466 'inF0' (in float)
0:466 'inF1' (in float)
0:466 'inFV2' (in 2-component vector of float)
0:466 'inFV3' (in 3-component vector of float)
-0:466 'inFM2x3' (in 3X2 matrix of float)
-0:466 'inFM3x2' (in 2X3 matrix of float)
+0:466 'inFM2x3' (in 2X3 matrix of float)
+0:466 'inFM3x2' (in 3X2 matrix of float)
0:466 'inFM3x3' (in 3X3 matrix of float)
-0:466 'inFM3x4' (in 4X3 matrix of float)
-0:466 'inFM2x4' (in 4X2 matrix of float)
+0:466 'inFM3x4' (in 3X4 matrix of float)
+0:466 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence
0:467 Sequence
0:467 move second child to first child (temp float)
0:467 'r00' (temp float)
0:467 component-wise multiply (temp float)
-0:467 'inF0' (in float)
0:467 'inF1' (in float)
+0:467 'inF0' (in float)
0:468 Sequence
0:468 move second child to first child (temp 2-component vector of float)
0:468 'r01' (temp 2-component vector of float)
0:468 vector-scale (temp 2-component vector of float)
-0:468 'inFV2' (in 2-component vector of float)
0:468 'inF0' (in float)
+0:468 'inFV2' (in 2-component vector of float)
0:469 Sequence
0:469 move second child to first child (temp 3-component vector of float)
0:469 'r02' (temp 3-component vector of float)
0:469 vector-scale (temp 3-component vector of float)
-0:469 'inFV3' (in 3-component vector of float)
0:469 'inF0' (in float)
+0:469 'inFV3' (in 3-component vector of float)
0:470 Sequence
0:470 move second child to first child (temp 2-component vector of float)
0:470 'r03' (temp 2-component vector of float)
0:470 vector-scale (temp 2-component vector of float)
-0:470 'inF0' (in float)
0:470 'inFV2' (in 2-component vector of float)
+0:470 'inF0' (in float)
0:471 Sequence
0:471 move second child to first child (temp 3-component vector of float)
0:471 'r04' (temp 3-component vector of float)
0:471 vector-scale (temp 3-component vector of float)
-0:471 'inF0' (in float)
0:471 'inFV3' (in 3-component vector of float)
+0:471 'inF0' (in float)
0:472 Sequence
0:472 move second child to first child (temp float)
0:472 'r05' (temp float)
@@ -5480,63 +5503,85 @@
0:474 Sequence
0:474 move second child to first child (temp 3-component vector of float)
0:474 'r07' (temp 3-component vector of float)
-0:474 vector-times-matrix (temp 3-component vector of float)
+0:474 matrix-times-vector (temp 3-component vector of float)
+0:474 'inFM2x3' (in 2X3 matrix of float)
0:474 'inFV2' (in 2-component vector of float)
-0:474 'inFM2x3' (in 3X2 matrix of float)
0:475 Sequence
0:475 move second child to first child (temp 2-component vector of float)
0:475 'r08' (temp 2-component vector of float)
-0:475 vector-times-matrix (temp 2-component vector of float)
+0:475 matrix-times-vector (temp 2-component vector of float)
+0:475 'inFM3x2' (in 3X2 matrix of float)
0:475 'inFV3' (in 3-component vector of float)
-0:475 'inFM3x2' (in 2X3 matrix of float)
0:476 Sequence
0:476 move second child to first child (temp 2-component vector of float)
0:476 'r09' (temp 2-component vector of float)
-0:476 matrix-times-vector (temp 2-component vector of float)
-0:476 'inFM2x3' (in 3X2 matrix of float)
+0:476 vector-times-matrix (temp 2-component vector of float)
0:476 'inFV3' (in 3-component vector of float)
+0:476 'inFM2x3' (in 2X3 matrix of float)
0:477 Sequence
0:477 move second child to first child (temp 3-component vector of float)
0:477 'r10' (temp 3-component vector of float)
-0:477 matrix-times-vector (temp 3-component vector of float)
-0:477 'inFM3x2' (in 2X3 matrix of float)
+0:477 vector-times-matrix (temp 3-component vector of float)
0:477 'inFV2' (in 2-component vector of float)
+0:477 'inFM3x2' (in 3X2 matrix of float)
0:478 Sequence
-0:478 move second child to first child (temp 3X2 matrix of float)
-0:478 'r11' (temp 3X2 matrix of float)
-0:478 matrix-scale (temp 3X2 matrix of float)
-0:478 'inFM2x3' (in 3X2 matrix of float)
+0:478 move second child to first child (temp 2X3 matrix of float)
+0:478 'r11' (temp 2X3 matrix of float)
+0:478 matrix-scale (temp 2X3 matrix of float)
0:478 'inF0' (in float)
+0:478 'inFM2x3' (in 2X3 matrix of float)
0:479 Sequence
-0:479 move second child to first child (temp 2X3 matrix of float)
-0:479 'r12' (temp 2X3 matrix of float)
-0:479 matrix-scale (temp 2X3 matrix of float)
-0:479 'inFM3x2' (in 2X3 matrix of float)
+0:479 move second child to first child (temp 3X2 matrix of float)
+0:479 'r12' (temp 3X2 matrix of float)
+0:479 matrix-scale (temp 3X2 matrix of float)
0:479 'inF0' (in float)
+0:479 'inFM3x2' (in 3X2 matrix of float)
0:480 Sequence
0:480 move second child to first child (temp 2X2 matrix of float)
0:480 'r13' (temp 2X2 matrix of float)
0:480 matrix-multiply (temp 2X2 matrix of float)
-0:480 'inFM2x3' (in 3X2 matrix of float)
-0:480 'inFM3x2' (in 2X3 matrix of float)
+0:480 'inFM3x2' (in 3X2 matrix of float)
+0:480 'inFM2x3' (in 2X3 matrix of float)
0:481 Sequence
-0:481 move second child to first child (temp 3X2 matrix of float)
-0:481 'r14' (temp 3X2 matrix of float)
-0:481 matrix-multiply (temp 3X2 matrix of float)
-0:481 'inFM2x3' (in 3X2 matrix of float)
+0:481 move second child to first child (temp 2X3 matrix of float)
+0:481 'r14' (temp 2X3 matrix of float)
+0:481 matrix-multiply (temp 2X3 matrix of float)
0:481 'inFM3x3' (in 3X3 matrix of float)
+0:481 'inFM2x3' (in 2X3 matrix of float)
0:482 Sequence
-0:482 move second child to first child (temp 4X2 matrix of float)
-0:482 'r15' (temp 4X2 matrix of float)
-0:482 matrix-multiply (temp 4X2 matrix of float)
-0:482 'inFM2x3' (in 3X2 matrix of float)
-0:482 'inFM3x4' (in 4X3 matrix of float)
+0:482 move second child to first child (temp 2X4 matrix of float)
+0:482 'r15' (temp 2X4 matrix of float)
+0:482 matrix-multiply (temp 2X4 matrix of float)
+0:482 'inFM3x4' (in 3X4 matrix of float)
+0:482 'inFM2x3' (in 2X3 matrix of float)
0:483 Sequence
-0:483 move second child to first child (temp 4X3 matrix of float)
-0:483 'r16' (temp 4X3 matrix of float)
-0:483 matrix-multiply (temp 4X3 matrix of float)
-0:483 'inFM3x2' (in 2X3 matrix of float)
-0:483 'inFM2x4' (in 4X2 matrix of float)
+0:483 move second child to first child (temp 3X4 matrix of float)
+0:483 'r16' (temp 3X4 matrix of float)
+0:483 matrix-multiply (temp 3X4 matrix of float)
+0:483 'inFM2x4' (in 2X4 matrix of float)
+0:483 'inFM3x2' (in 3X2 matrix of float)
+0:489 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:489 Function Parameters:
+0:? Sequence
+0:491 move second child to first child (temp 4-component vector of float)
+0:491 color: direct index for structure (temp 4-component vector of float)
+0:491 'ps_output' (temp structure{temp 4-component vector of float color})
+0:491 Constant:
+0:491 0 (const int)
+0:491 Constant:
+0:491 1.000000
+0:491 1.000000
+0:491 1.000000
+0:491 1.000000
+0:? Sequence
+0:? Sequence
+0:492 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:492 color: direct index for structure (temp 4-component vector of float)
+0:492 'ps_output' (temp structure{temp 4-component vector of float color})
+0:492 Constant:
+0:492 0 (const int)
+0:492 Branch: Return
0:? Linker Objects
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
@@ -5550,19 +5595,19 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 1812
+// Id's are bound by 1825
Capability Shader
Capability DerivativeControl
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 810 837 845 854
+ EntryPoint Fragment 4 "main" 1805
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
- Name 4 "PixelShaderFunction"
+ Name 4 "main"
Name 16 "PixelShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
Name 12 "inF1"
@@ -5585,502 +5630,509 @@
Name 43 "inF2"
Name 44 "inU0"
Name 45 "inU1"
- Name 54 "PixelShaderFunction2x2(mf22;mf22;mf22;"
- Name 51 "inF0"
- Name 52 "inF1"
- Name 53 "inF2"
- Name 62 "PixelShaderFunction3x3(mf33;mf33;mf33;"
- Name 59 "inF0"
- Name 60 "inF1"
- Name 61 "inF2"
- Name 71 "PixelShaderFunction4x4(mf44;mf44;mf44;"
- Name 68 "inF0"
- Name 69 "inF1"
- Name 70 "inF2"
- Name 80 "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;"
- Name 74 "inF0"
- Name 75 "inF1"
- Name 76 "inFV0"
- Name 77 "inFV1"
- Name 78 "inFM0"
- Name 79 "inFM1"
- Name 89 "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;"
- Name 83 "inF0"
- Name 84 "inF1"
- Name 85 "inFV0"
- Name 86 "inFV1"
- Name 87 "inFM0"
- Name 88 "inFM1"
- Name 99 "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;"
- Name 93 "inF0"
- Name 94 "inF1"
- Name 95 "inFV0"
- Name 96 "inFV1"
- Name 97 "inFM0"
- Name 98 "inFM1"
- Name 119 "TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;"
- Name 110 "inF0"
- Name 111 "inF1"
- Name 112 "inFV2"
- Name 113 "inFV3"
- Name 114 "inFM2x3"
- Name 115 "inFM3x2"
- Name 116 "inFM3x3"
- Name 117 "inFM3x4"
- Name 118 "inFM2x4"
- Name 123 "r000"
- Name 126 "r001"
- Name 129 "r002"
- Name 132 "r003"
- Name 135 "r004"
- Name 140 "r005"
- Name 143 "r006"
- Name 146 "r007"
- Name 149 "r009"
- Name 152 "r010"
- Name 156 "r011"
- Name 159 "r012"
- Name 170 "r014"
- Name 173 "r015"
- Name 176 "r016"
- Name 179 "r017"
- Name 182 "r018"
- Name 185 "r019"
- Name 188 "r020"
- Name 191 "r021"
- Name 194 "r022"
- Name 197 "r023"
- Name 200 "r027"
- Name 203 "r028"
- Name 206 "r029"
- Name 210 "r030"
- Name 213 "r031"
- Name 216 "r033"
- Name 220 "r034"
- Name 223 "r035"
- Name 225 "ResType"
- Name 229 "r036"
- Name 232 "r037"
- Name 235 "r038"
- Name 238 "r039"
- Name 242 "r039a"
- Name 247 "r040"
- Name 250 "r041"
- Name 255 "r042"
- Name 258 "r043"
- Name 262 "r044"
- Name 266 "r045"
- Name 270 "r046"
- Name 273 "r047"
- Name 277 "r048"
- Name 280 "r049"
- Name 283 "r050"
- Name 286 "r051"
- Name 289 "r052"
- Name 292 "r053"
- Name 299 "r055"
- Name 302 "r056"
- Name 307 "r057"
- Name 310 "r058"
- Name 314 "r059"
- Name 317 "r060"
- Name 320 "r061"
- Name 327 "r000"
- Name 330 "r001"
- Name 333 "r002"
- Name 336 "r003"
- Name 339 "r004"
- Name 344 "r005"
- Name 347 "r006"
- Name 350 "r007"
- Name 353 "r009"
- Name 356 "r010"
- Name 360 "r011"
- Name 363 "r012"
- Name 376 "r013"
- Name 379 "r015"
- Name 382 "r016"
- Name 386 "r017"
- Name 389 "r018"
- Name 392 "r019"
- Name 395 "r020"
- Name 398 "r021"
- Name 401 "r022"
- Name 404 "r023"
- Name 407 "r026"
- Name 411 "r027"
- Name 415 "r028"
- Name 418 "r029"
- Name 421 "r030"
- Name 426 "r031"
- Name 430 "r032"
- Name 432 "r033"
- Name 435 "r035"
- Name 439 "r036"
- Name 442 "r037"
- Name 444 "ResType"
- Name 448 "r038"
- Name 452 "r039"
- Name 455 "r040"
- Name 458 "r041"
- Name 462 "r039a"
- Name 467 "r042"
- Name 470 "r043"
- Name 473 "r044"
- Name 477 "r045"
- Name 480 "r046"
- Name 484 "r047"
- Name 488 "r048"
- Name 491 "r049"
- Name 495 "r050"
- Name 498 "r051"
- Name 502 "r052"
- Name 506 "r053"
- Name 511 "r054"
- Name 515 "r055"
- Name 518 "r056"
- Name 521 "r057"
- Name 526 "r058"
- Name 529 "r059"
- Name 536 "r060"
- Name 539 "r061"
- Name 544 "r062"
- Name 547 "r063"
- Name 551 "r064"
- Name 554 "r065"
- Name 557 "r066"
- Name 563 "r000"
- Name 566 "r001"
- Name 569 "r002"
- Name 572 "r003"
- Name 575 "r004"
- Name 580 "r005"
- Name 583 "r006"
- Name 586 "r007"
- Name 589 "r009"
- Name 592 "r010"
- Name 596 "r011"
- Name 599 "r012"
- Name 612 "r013"
- Name 615 "r014"
- Name 618 "r015"
- Name 622 "r016"
- Name 626 "r017"
- Name 629 "r018"
- Name 632 "r019"
- Name 635 "r020"
- Name 638 "r021"
- Name 641 "r022"
- Name 644 "r023"
- Name 647 "r024"
- Name 651 "r025"
- Name 655 "r029"
- Name 658 "r030"
- Name 661 "r031"
- Name 666 "r032"
- Name 670 "r033"
- Name 672 "r034"
- Name 675 "r036"
- Name 679 "r037"
- Name 682 "r038"
- Name 684 "ResType"
- Name 688 "r039"
- Name 692 "r040"
- Name 695 "r041"
- Name 698 "r042"
- Name 702 "r039a"
- Name 707 "r039b"
- Name 713 "r043"
- Name 716 "r044"
- Name 719 "r045"
- Name 723 "r046"
- Name 726 "r047"
- Name 730 "r048"
- Name 734 "r049"
- Name 737 "r050"
- Name 741 "r051"
- Name 744 "r052"
- Name 748 "r053"
- Name 752 "r054"
- Name 756 "r055"
- Name 759 "r056"
- Name 762 "r057"
- Name 765 "r058"
- Name 770 "r059"
- Name 773 "r060"
- Name 780 "r061"
- Name 783 "r062"
- Name 788 "r063"
- Name 791 "r064"
- Name 795 "r065"
- Name 798 "r066"
- Name 801 "r067"
- Name 808 "r000"
- Name 810 "inF0"
- Name 813 "r001"
- Name 816 "r002"
- Name 819 "r003"
- Name 822 "r004"
- Name 827 "r005"
- Name 832 "r006"
- Name 835 "r007"
- Name 837 "inU0"
- Name 840 "r009"
- Name 843 "r010"
- Name 845 "inF1"
- Name 848 "r011"
- Name 851 "r012"
- Name 854 "inF2"
- Name 865 "r013"
- Name 868 "r014"
- Name 871 "r015"
- Name 874 "r016"
- Name 877 "r017"
- Name 880 "r018"
- Name 883 "r019"
- Name 886 "r020"
- Name 889 "r021"
- Name 892 "r022"
- Name 895 "r023"
- Name 899 "r024"
- Name 903 "r025"
- Name 915 "r029"
- Name 918 "r030"
- Name 921 "r031"
- Name 926 "r032"
- Name 931 "r033"
- Name 933 "r034"
- Name 936 "r036"
- Name 940 "r037"
- Name 943 "r038"
- Name 945 "ResType"
- Name 949 "r039"
- Name 953 "r040"
- Name 956 "r041"
- Name 959 "r042"
- Name 963 "r039a"
- Name 968 "r043"
- Name 971 "r044"
- Name 974 "r045"
- Name 978 "r046"
- Name 981 "r047"
- Name 985 "r048"
- Name 989 "r049"
- Name 992 "r050"
- Name 996 "r051"
- Name 999 "r052"
- Name 1003 "r053"
- Name 1007 "r054"
- Name 1011 "r055"
- Name 1014 "r056"
- Name 1017 "r057"
- Name 1020 "r058"
- Name 1025 "r059"
- Name 1028 "r060"
- Name 1035 "r061"
- Name 1038 "r062"
- Name 1043 "r063"
- Name 1046 "r064"
- Name 1050 "r065"
- Name 1053 "r066"
- Name 1056 "r067"
- Name 1062 "r000"
- Name 1065 "r001"
- Name 1070 "r003"
- Name 1073 "r004"
- Name 1076 "r005"
- Name 1079 "r006"
- Name 1083 "r007"
- Name 1094 "r008"
- Name 1099 "r009"
- Name 1102 "r010"
- Name 1105 "r011"
- Name 1108 "r012"
- Name 1111 "r013"
- Name 1114 "r014"
- Name 1117 "r015"
- Name 1120 "r016"
- Name 1123 "r017"
- Name 1126 "r018"
- Name 1129 "r019"
- Name 1132 "R020"
- Name 1135 "r021"
- Name 1138 "r022"
- Name 1148 "r023"
- Name 1151 "r024"
- Name 1153 "ResType"
- Name 1157 "r025"
- Name 1160 "r026"
- Name 1164 "r026a"
- Name 1169 "r027"
- Name 1172 "r028"
- Name 1176 "r029"
- Name 1179 "r030"
- Name 1183 "r031"
- Name 1187 "r032"
- Name 1191 "r033"
- Name 1194 "r034"
- Name 1197 "r035"
- Name 1200 "r036"
- Name 1205 "r037"
- Name 1208 "r038"
- Name 1215 "r039"
- Name 1218 "r049"
- Name 1223 "r041"
- Name 1226 "r042"
- Name 1230 "r043"
- Name 1233 "r044"
- Name 1238 "r046"
- Name 1245 "r000"
- Name 1248 "r001"
- Name 1253 "r003"
- Name 1256 "r004"
- Name 1259 "r005"
- Name 1262 "r006"
- Name 1266 "r007"
- Name 1277 "r008"
- Name 1282 "r009"
- Name 1285 "r010"
- Name 1288 "r011"
- Name 1291 "r012"
- Name 1294 "r013"
- Name 1297 "r014"
- Name 1300 "r015"
- Name 1303 "r016"
- Name 1306 "r017"
- Name 1309 "r018"
- Name 1312 "r019"
- Name 1315 "R020"
- Name 1318 "r021"
- Name 1321 "r022"
- Name 1334 "r023"
- Name 1337 "r024"
- Name 1339 "ResType"
- Name 1343 "r025"
- Name 1346 "r026"
- Name 1350 "r026a"
- Name 1355 "r027"
- Name 1358 "r028"
- Name 1362 "r029"
- Name 1365 "r030"
- Name 1369 "r031"
- Name 1373 "r032"
- Name 1377 "r033"
- Name 1380 "r034"
- Name 1383 "r035"
- Name 1386 "r036"
- Name 1391 "r037"
- Name 1394 "r038"
- Name 1401 "r039"
- Name 1404 "r049"
- Name 1409 "r041"
- Name 1412 "r042"
- Name 1416 "r043"
- Name 1419 "r044"
- Name 1424 "r046"
- Name 1431 "r000"
- Name 1434 "r001"
- Name 1439 "r003"
- Name 1442 "r004"
- Name 1445 "r005"
- Name 1448 "r006"
- Name 1452 "r007"
- Name 1463 "r008"
- Name 1468 "r009"
- Name 1471 "r010"
- Name 1474 "r011"
- Name 1477 "r012"
- Name 1480 "r013"
- Name 1483 "r014"
- Name 1486 "r015"
- Name 1489 "r016"
- Name 1492 "r017"
- Name 1495 "r018"
- Name 1498 "r019"
- Name 1501 "R020"
- Name 1504 "r021"
- Name 1507 "r022"
- Name 1523 "r023"
- Name 1526 "r024"
- Name 1528 "ResType"
- Name 1532 "r025"
- Name 1535 "r026"
- Name 1539 "r026a"
- Name 1544 "r027"
- Name 1547 "r028"
- Name 1551 "r029"
- Name 1554 "r030"
- Name 1558 "r031"
- Name 1562 "r032"
- Name 1566 "r033"
- Name 1569 "r034"
- Name 1572 "r035"
- Name 1575 "r036"
- Name 1580 "r037"
- Name 1583 "r038"
- Name 1590 "r039"
- Name 1593 "r049"
- Name 1598 "r041"
- Name 1601 "r042"
- Name 1605 "r043"
- Name 1608 "r044"
- Name 1613 "r046"
- Name 1620 "r0"
- Name 1624 "r1"
- Name 1628 "r2"
- Name 1632 "r3"
- Name 1636 "r4"
- Name 1640 "r5"
- Name 1644 "r6"
- Name 1648 "r7"
- Name 1652 "r8"
- Name 1656 "r0"
- Name 1660 "r1"
- Name 1664 "r2"
- Name 1668 "r3"
- Name 1672 "r4"
- Name 1676 "r5"
- Name 1680 "r6"
- Name 1684 "r7"
- Name 1688 "r8"
- Name 1692 "r0"
- Name 1696 "r1"
- Name 1700 "r2"
- Name 1704 "r3"
- Name 1708 "r4"
- Name 1712 "r5"
- Name 1716 "r6"
- Name 1720 "r7"
- Name 1724 "r8"
- Name 1728 "r00"
- Name 1732 "r01"
- Name 1736 "r02"
- Name 1740 "r03"
- Name 1744 "r04"
- Name 1748 "r05"
- Name 1752 "r06"
- Name 1756 "r07"
- Name 1760 "r08"
- Name 1764 "r09"
- Name 1768 "r10"
- Name 1772 "r11"
- Name 1776 "r12"
- Name 1780 "r13"
- Name 1784 "r14"
- Name 1788 "r15"
- Name 1792 "r16"
- Name 1797 "gs_ua"
- Name 1798 "gs_ub"
- Name 1799 "gs_uc"
- Name 1801 "gs_ua2"
- Name 1802 "gs_ub2"
- Name 1803 "gs_uc2"
- Name 1805 "gs_ua3"
- Name 1806 "gs_ub3"
- Name 1807 "gs_uc3"
- Name 1809 "gs_ua4"
- Name 1810 "gs_ub4"
- Name 1811 "gs_uc4"
+ Name 58 "PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;"
+ Name 53 "inF0"
+ Name 54 "inF1"
+ Name 55 "inF2"
+ Name 56 "inU0"
+ Name 57 "inU1"
+ Name 66 "PixelShaderFunction2x2(mf22;mf22;mf22;"
+ Name 63 "inF0"
+ Name 64 "inF1"
+ Name 65 "inF2"
+ Name 74 "PixelShaderFunction3x3(mf33;mf33;mf33;"
+ Name 71 "inF0"
+ Name 72 "inF1"
+ Name 73 "inF2"
+ Name 82 "PixelShaderFunction4x4(mf44;mf44;mf44;"
+ Name 79 "inF0"
+ Name 80 "inF1"
+ Name 81 "inF2"
+ Name 91 "TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;"
+ Name 85 "inF0"
+ Name 86 "inF1"
+ Name 87 "inFV0"
+ Name 88 "inFV1"
+ Name 89 "inFM0"
+ Name 90 "inFM1"
+ Name 100 "TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;"
+ Name 94 "inF0"
+ Name 95 "inF1"
+ Name 96 "inFV0"
+ Name 97 "inFV1"
+ Name 98 "inFM0"
+ Name 99 "inFM1"
+ Name 109 "TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;"
+ Name 103 "inF0"
+ Name 104 "inF1"
+ Name 105 "inFV0"
+ Name 106 "inFV1"
+ Name 107 "inFM0"
+ Name 108 "inFM1"
+ Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;"
+ Name 120 "inF0"
+ Name 121 "inF1"
+ Name 122 "inFV2"
+ Name 123 "inFV3"
+ Name 124 "inFM2x3"
+ Name 125 "inFM3x2"
+ Name 126 "inFM3x3"
+ Name 127 "inFM3x4"
+ Name 128 "inFM2x4"
+ Name 133 "r000"
+ Name 136 "r001"
+ Name 139 "r002"
+ Name 142 "r003"
+ Name 145 "r004"
+ Name 150 "r005"
+ Name 153 "r006"
+ Name 156 "r007"
+ Name 159 "r009"
+ Name 162 "r010"
+ Name 166 "r011"
+ Name 169 "r012"
+ Name 180 "r014"
+ Name 183 "r015"
+ Name 186 "r016"
+ Name 189 "r017"
+ Name 192 "r018"
+ Name 195 "r019"
+ Name 198 "r020"
+ Name 201 "r021"
+ Name 204 "r022"
+ Name 207 "r023"
+ Name 210 "r027"
+ Name 213 "r028"
+ Name 216 "r029"
+ Name 220 "r030"
+ Name 223 "r031"
+ Name 226 "r033"
+ Name 230 "r034"
+ Name 233 "r035"
+ Name 235 "ResType"
+ Name 239 "r036"
+ Name 242 "r037"
+ Name 245 "r038"
+ Name 248 "r039"
+ Name 252 "r039a"
+ Name 257 "r040"
+ Name 260 "r041"
+ Name 265 "r042"
+ Name 268 "r043"
+ Name 272 "r044"
+ Name 276 "r045"
+ Name 280 "r046"
+ Name 283 "r047"
+ Name 287 "r048"
+ Name 290 "r049"
+ Name 293 "r050"
+ Name 296 "r051"
+ Name 299 "r052"
+ Name 302 "r053"
+ Name 309 "r055"
+ Name 312 "r056"
+ Name 317 "r057"
+ Name 320 "r058"
+ Name 324 "r059"
+ Name 327 "r060"
+ Name 330 "r061"
+ Name 337 "r000"
+ Name 340 "r001"
+ Name 343 "r002"
+ Name 346 "r003"
+ Name 349 "r004"
+ Name 354 "r005"
+ Name 357 "r006"
+ Name 360 "r007"
+ Name 363 "r009"
+ Name 366 "r010"
+ Name 370 "r011"
+ Name 373 "r012"
+ Name 386 "r013"
+ Name 389 "r015"
+ Name 392 "r016"
+ Name 396 "r017"
+ Name 399 "r018"
+ Name 402 "r019"
+ Name 405 "r020"
+ Name 408 "r021"
+ Name 411 "r022"
+ Name 414 "r023"
+ Name 417 "r026"
+ Name 421 "r027"
+ Name 425 "r028"
+ Name 428 "r029"
+ Name 431 "r030"
+ Name 436 "r031"
+ Name 440 "r032"
+ Name 442 "r033"
+ Name 445 "r035"
+ Name 449 "r036"
+ Name 452 "r037"
+ Name 454 "ResType"
+ Name 458 "r038"
+ Name 462 "r039"
+ Name 465 "r040"
+ Name 468 "r041"
+ Name 472 "r039a"
+ Name 477 "r042"
+ Name 480 "r043"
+ Name 483 "r044"
+ Name 487 "r045"
+ Name 490 "r046"
+ Name 494 "r047"
+ Name 498 "r048"
+ Name 501 "r049"
+ Name 505 "r050"
+ Name 508 "r051"
+ Name 512 "r052"
+ Name 516 "r053"
+ Name 521 "r054"
+ Name 525 "r055"
+ Name 528 "r056"
+ Name 531 "r057"
+ Name 536 "r058"
+ Name 539 "r059"
+ Name 546 "r060"
+ Name 549 "r061"
+ Name 554 "r062"
+ Name 557 "r063"
+ Name 561 "r064"
+ Name 564 "r065"
+ Name 567 "r066"
+ Name 573 "r000"
+ Name 576 "r001"
+ Name 579 "r002"
+ Name 582 "r003"
+ Name 585 "r004"
+ Name 590 "r005"
+ Name 593 "r006"
+ Name 596 "r007"
+ Name 599 "r009"
+ Name 602 "r010"
+ Name 606 "r011"
+ Name 609 "r012"
+ Name 622 "r013"
+ Name 625 "r014"
+ Name 628 "r015"
+ Name 632 "r016"
+ Name 636 "r017"
+ Name 639 "r018"
+ Name 642 "r019"
+ Name 645 "r020"
+ Name 648 "r021"
+ Name 651 "r022"
+ Name 654 "r023"
+ Name 657 "r024"
+ Name 661 "r025"
+ Name 665 "r029"
+ Name 668 "r030"
+ Name 671 "r031"
+ Name 676 "r032"
+ Name 680 "r033"
+ Name 682 "r034"
+ Name 685 "r036"
+ Name 689 "r037"
+ Name 692 "r038"
+ Name 694 "ResType"
+ Name 698 "r039"
+ Name 702 "r040"
+ Name 705 "r041"
+ Name 708 "r042"
+ Name 712 "r039a"
+ Name 717 "r039b"
+ Name 723 "r043"
+ Name 726 "r044"
+ Name 729 "r045"
+ Name 733 "r046"
+ Name 736 "r047"
+ Name 740 "r048"
+ Name 744 "r049"
+ Name 747 "r050"
+ Name 751 "r051"
+ Name 754 "r052"
+ Name 758 "r053"
+ Name 762 "r054"
+ Name 766 "r055"
+ Name 769 "r056"
+ Name 772 "r057"
+ Name 775 "r058"
+ Name 780 "r059"
+ Name 783 "r060"
+ Name 790 "r061"
+ Name 793 "r062"
+ Name 798 "r063"
+ Name 801 "r064"
+ Name 805 "r065"
+ Name 808 "r066"
+ Name 811 "r067"
+ Name 818 "r000"
+ Name 821 "r001"
+ Name 824 "r002"
+ Name 827 "r003"
+ Name 830 "r004"
+ Name 835 "r005"
+ Name 838 "r006"
+ Name 841 "r007"
+ Name 844 "r009"
+ Name 847 "r010"
+ Name 851 "r011"
+ Name 854 "r012"
+ Name 867 "r013"
+ Name 870 "r014"
+ Name 873 "r015"
+ Name 876 "r016"
+ Name 879 "r017"
+ Name 882 "r018"
+ Name 885 "r019"
+ Name 888 "r020"
+ Name 891 "r021"
+ Name 894 "r022"
+ Name 897 "r023"
+ Name 901 "r024"
+ Name 905 "r025"
+ Name 916 "r029"
+ Name 919 "r030"
+ Name 922 "r031"
+ Name 927 "r032"
+ Name 932 "r033"
+ Name 934 "r034"
+ Name 937 "r036"
+ Name 941 "r037"
+ Name 944 "r038"
+ Name 946 "ResType"
+ Name 950 "r039"
+ Name 954 "r040"
+ Name 957 "r041"
+ Name 960 "r042"
+ Name 964 "r039a"
+ Name 969 "r043"
+ Name 972 "r044"
+ Name 975 "r045"
+ Name 979 "r046"
+ Name 982 "r047"
+ Name 986 "r048"
+ Name 990 "r049"
+ Name 993 "r050"
+ Name 997 "r051"
+ Name 1000 "r052"
+ Name 1004 "r053"
+ Name 1008 "r054"
+ Name 1012 "r055"
+ Name 1015 "r056"
+ Name 1018 "r057"
+ Name 1021 "r058"
+ Name 1026 "r059"
+ Name 1029 "r060"
+ Name 1036 "r061"
+ Name 1039 "r062"
+ Name 1044 "r063"
+ Name 1047 "r064"
+ Name 1051 "r065"
+ Name 1054 "r066"
+ Name 1057 "r067"
+ Name 1064 "r000"
+ Name 1067 "r001"
+ Name 1072 "r003"
+ Name 1075 "r004"
+ Name 1078 "r005"
+ Name 1081 "r006"
+ Name 1085 "r007"
+ Name 1096 "r008"
+ Name 1101 "r009"
+ Name 1104 "r010"
+ Name 1107 "r011"
+ Name 1110 "r012"
+ Name 1113 "r013"
+ Name 1116 "r014"
+ Name 1119 "r015"
+ Name 1122 "r016"
+ Name 1125 "r017"
+ Name 1128 "r018"
+ Name 1131 "r019"
+ Name 1134 "R020"
+ Name 1137 "r021"
+ Name 1140 "r022"
+ Name 1150 "r023"
+ Name 1153 "r024"
+ Name 1155 "ResType"
+ Name 1159 "r025"
+ Name 1162 "r026"
+ Name 1166 "r026a"
+ Name 1171 "r027"
+ Name 1174 "r028"
+ Name 1178 "r029"
+ Name 1181 "r030"
+ Name 1185 "r031"
+ Name 1189 "r032"
+ Name 1193 "r033"
+ Name 1196 "r034"
+ Name 1199 "r035"
+ Name 1202 "r036"
+ Name 1207 "r037"
+ Name 1210 "r038"
+ Name 1217 "r039"
+ Name 1220 "r049"
+ Name 1225 "r041"
+ Name 1228 "r042"
+ Name 1232 "r043"
+ Name 1235 "r044"
+ Name 1240 "r046"
+ Name 1247 "r000"
+ Name 1250 "r001"
+ Name 1255 "r003"
+ Name 1258 "r004"
+ Name 1261 "r005"
+ Name 1264 "r006"
+ Name 1268 "r007"
+ Name 1279 "r008"
+ Name 1284 "r009"
+ Name 1287 "r010"
+ Name 1290 "r011"
+ Name 1293 "r012"
+ Name 1296 "r013"
+ Name 1299 "r014"
+ Name 1302 "r015"
+ Name 1305 "r016"
+ Name 1308 "r017"
+ Name 1311 "r018"
+ Name 1314 "r019"
+ Name 1317 "R020"
+ Name 1320 "r021"
+ Name 1323 "r022"
+ Name 1336 "r023"
+ Name 1339 "r024"
+ Name 1341 "ResType"
+ Name 1345 "r025"
+ Name 1348 "r026"
+ Name 1352 "r026a"
+ Name 1357 "r027"
+ Name 1360 "r028"
+ Name 1364 "r029"
+ Name 1367 "r030"
+ Name 1371 "r031"
+ Name 1375 "r032"
+ Name 1379 "r033"
+ Name 1382 "r034"
+ Name 1385 "r035"
+ Name 1388 "r036"
+ Name 1393 "r037"
+ Name 1396 "r038"
+ Name 1403 "r039"
+ Name 1406 "r049"
+ Name 1411 "r041"
+ Name 1414 "r042"
+ Name 1418 "r043"
+ Name 1421 "r044"
+ Name 1426 "r046"
+ Name 1433 "r000"
+ Name 1436 "r001"
+ Name 1441 "r003"
+ Name 1444 "r004"
+ Name 1447 "r005"
+ Name 1450 "r006"
+ Name 1454 "r007"
+ Name 1465 "r008"
+ Name 1470 "r009"
+ Name 1473 "r010"
+ Name 1476 "r011"
+ Name 1479 "r012"
+ Name 1482 "r013"
+ Name 1485 "r014"
+ Name 1488 "r015"
+ Name 1491 "r016"
+ Name 1494 "r017"
+ Name 1497 "r018"
+ Name 1500 "r019"
+ Name 1503 "R020"
+ Name 1506 "r021"
+ Name 1509 "r022"
+ Name 1525 "r023"
+ Name 1528 "r024"
+ Name 1530 "ResType"
+ Name 1534 "r025"
+ Name 1537 "r026"
+ Name 1541 "r026a"
+ Name 1546 "r027"
+ Name 1549 "r028"
+ Name 1553 "r029"
+ Name 1556 "r030"
+ Name 1560 "r031"
+ Name 1564 "r032"
+ Name 1568 "r033"
+ Name 1571 "r034"
+ Name 1574 "r035"
+ Name 1577 "r036"
+ Name 1582 "r037"
+ Name 1585 "r038"
+ Name 1592 "r039"
+ Name 1595 "r049"
+ Name 1600 "r041"
+ Name 1603 "r042"
+ Name 1607 "r043"
+ Name 1610 "r044"
+ Name 1615 "r046"
+ Name 1622 "r0"
+ Name 1626 "r1"
+ Name 1630 "r2"
+ Name 1634 "r3"
+ Name 1638 "r4"
+ Name 1642 "r5"
+ Name 1646 "r6"
+ Name 1650 "r7"
+ Name 1654 "r8"
+ Name 1658 "r0"
+ Name 1662 "r1"
+ Name 1666 "r2"
+ Name 1670 "r3"
+ Name 1674 "r4"
+ Name 1678 "r5"
+ Name 1682 "r6"
+ Name 1686 "r7"
+ Name 1690 "r8"
+ Name 1694 "r0"
+ Name 1698 "r1"
+ Name 1702 "r2"
+ Name 1706 "r3"
+ Name 1710 "r4"
+ Name 1714 "r5"
+ Name 1718 "r6"
+ Name 1722 "r7"
+ Name 1726 "r8"
+ Name 1730 "r00"
+ Name 1734 "r01"
+ Name 1738 "r02"
+ Name 1742 "r03"
+ Name 1746 "r04"
+ Name 1750 "r05"
+ Name 1754 "r06"
+ Name 1758 "r07"
+ Name 1762 "r08"
+ Name 1766 "r09"
+ Name 1770 "r10"
+ Name 1774 "r11"
+ Name 1778 "r12"
+ Name 1782 "r13"
+ Name 1786 "r14"
+ Name 1790 "r15"
+ Name 1794 "r16"
+ Name 1798 "PS_OUTPUT"
+ MemberName 1798(PS_OUTPUT) 0 "color"
+ Name 1800 "ps_output"
+ Name 1805 "color"
+ Name 1810 "gs_ua"
+ Name 1811 "gs_ub"
+ Name 1812 "gs_uc"
+ Name 1814 "gs_ua2"
+ Name 1815 "gs_ub2"
+ Name 1816 "gs_uc2"
+ Name 1818 "gs_ua3"
+ Name 1819 "gs_ub3"
+ Name 1820 "gs_uc3"
+ Name 1822 "gs_ua4"
+ Name 1823 "gs_ub4"
+ Name 1824 "gs_uc4"
+ Decorate 1805(color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -6099,424 +6151,130 @@
38: TypeVector 8(int) 3
39: TypePointer Function 38(ivec3)
40: TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr)
- 48: TypeMatrix 24(fvec2) 2
- 49: TypePointer Function 48
- 50: TypeFunction 48 49(ptr) 49(ptr) 49(ptr)
- 56: TypeMatrix 36(fvec3) 3
- 57: TypePointer Function 56
- 58: TypeFunction 56 57(ptr) 57(ptr) 57(ptr)
- 64: TypeVector 6(float) 4
- 65: TypeMatrix 64(fvec4) 4
- 66: TypePointer Function 65
- 67: TypeFunction 65 66(ptr) 66(ptr) 66(ptr)
- 73: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 49(ptr) 49(ptr)
- 82: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 57(ptr) 57(ptr)
- 91: TypePointer Function 64(fvec4)
- 92: TypeFunction 2 7(ptr) 7(ptr) 91(ptr) 91(ptr) 66(ptr) 66(ptr)
- 101: TypeMatrix 24(fvec2) 3
- 102: TypePointer Function 101
- 103: TypeMatrix 36(fvec3) 2
- 104: TypePointer Function 103
- 105: TypeMatrix 36(fvec3) 4
- 106: TypePointer Function 105
- 107: TypeMatrix 24(fvec2) 4
- 108: TypePointer Function 107
- 109: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 102(ptr) 104(ptr) 57(ptr) 106(ptr) 108(ptr)
- 121: TypeBool
- 122: TypePointer Function 121(bool)
- 138: TypeInt 32 1
- 139: TypePointer Function 138(int)
- 165: 6(float) Constant 0
- 177: 8(int) Constant 7
- 207: 138(int) Constant 7
- 225(ResType): TypeStruct 6(float) 138(int)
- 253: 6(float) Constant 1050288283
- 274: 6(float) Constant 1065353216
- 278: 8(int) Constant 2
- 342: TypeVector 138(int) 2
- 343: TypePointer Function 342(ivec2)
- 369: 24(fvec2) ConstantComposite 165 165
- 370: TypeVector 121(bool) 2
- 383: 8(int) Constant 3
- 384: 26(ivec2) ConstantComposite 177 383
- 427: 8(int) Constant 8
- 428: 26(ivec2) ConstantComposite 177 427
- 444(ResType): TypeStruct 24(fvec2) 342(ivec2)
- 451: TypePointer Function 370(bvec2)
- 509: 6(float) Constant 1073741824
- 512: 8(int) Constant 1
- 513: 26(ivec2) ConstantComposite 512 278
- 560: 24(fvec2) ConstantComposite 274 509
- 578: TypeVector 138(int) 3
- 579: TypePointer Function 578(ivec3)
- 605: 36(fvec3) ConstantComposite 165 165 165
- 606: TypeVector 121(bool) 3
- 619: 8(int) Constant 5
- 620: 38(ivec3) ConstantComposite 177 383 619
- 667: 8(int) Constant 4
- 668: 38(ivec3) ConstantComposite 278 383 667
- 684(ResType): TypeStruct 36(fvec3) 578(ivec3)
- 691: TypePointer Function 606(bvec3)
- 710: 6(float) Constant 1050253722
- 757: 38(ivec3) ConstantComposite 512 278 383
- 804: 6(float) Constant 1077936128
- 805: 36(fvec3) ConstantComposite 274 509 804
- 809: TypePointer Input 64(fvec4)
- 810(inF0): 809(ptr) Variable Input
- 825: TypeVector 138(int) 4
- 826: TypePointer Function 825(ivec4)
- 830: TypeVector 8(int) 4
- 831: TypePointer Function 830(ivec4)
- 836: TypePointer Input 830(ivec4)
- 837(inU0): 836(ptr) Variable Input
- 845(inF1): 809(ptr) Variable Input
- 854(inF2): 809(ptr) Variable Input
- 858: 64(fvec4) ConstantComposite 165 165 165 165
- 859: TypeVector 121(bool) 4
- 872: 830(ivec4) ConstantComposite 177 383 619 278
- 904: TypePointer Input 6(float)
- 927: 8(int) Constant 9
- 928: 8(int) Constant 10
- 929: 830(ivec4) ConstantComposite 177 427 927 928
- 945(ResType): TypeStruct 64(fvec4) 825(ivec4)
- 952: TypePointer Function 859(bvec4)
- 1012: 830(ivec4) ConstantComposite 512 278 383 667
- 1059: 6(float) Constant 1082130432
- 1060: 64(fvec4) ConstantComposite 274 509 804 1059
- 1087: 48 ConstantComposite 369 369
- 1088: TypeMatrix 370(bvec2) 2
- 1153(ResType): TypeStruct 48 342(ivec2)
- 1241: 24(fvec2) ConstantComposite 509 509
- 1242: 48 ConstantComposite 1241 1241
- 1270: 56 ConstantComposite 605 605 605
- 1271: TypeMatrix 606(bvec3) 3
- 1339(ResType): TypeStruct 56 578(ivec3)
- 1427: 36(fvec3) ConstantComposite 804 804 804
- 1428: 56 ConstantComposite 1427 1427 1427
- 1456: 65 ConstantComposite 858 858 858 858
- 1457: TypeMatrix 859(bvec4) 4
- 1528(ResType): TypeStruct 65 825(ivec4)
- 1616: 64(fvec4) ConstantComposite 1059 1059 1059 1059
- 1617: 65 ConstantComposite 1616 1616 1616 1616
- 1796: TypePointer Private 8(int)
- 1797(gs_ua): 1796(ptr) Variable Private
- 1798(gs_ub): 1796(ptr) Variable Private
- 1799(gs_uc): 1796(ptr) Variable Private
- 1800: TypePointer Private 26(ivec2)
- 1801(gs_ua2): 1800(ptr) Variable Private
- 1802(gs_ub2): 1800(ptr) Variable Private
- 1803(gs_uc2): 1800(ptr) Variable Private
- 1804: TypePointer Private 38(ivec3)
- 1805(gs_ua3): 1804(ptr) Variable Private
- 1806(gs_ub3): 1804(ptr) Variable Private
- 1807(gs_uc3): 1804(ptr) Variable Private
- 1808: TypePointer Private 830(ivec4)
- 1809(gs_ua4): 1808(ptr) Variable Private
- 1810(gs_ub4): 1808(ptr) Variable Private
- 1811(gs_uc4): 1808(ptr) Variable Private
-4(PixelShaderFunction): 2 Function None 3
+ 48: TypeVector 6(float) 4
+ 49: TypePointer Function 48(fvec4)
+ 50: TypeVector 8(int) 4
+ 51: TypePointer Function 50(ivec4)
+ 52: TypeFunction 48(fvec4) 49(ptr) 49(ptr) 49(ptr) 51(ptr) 51(ptr)
+ 60: TypeMatrix 24(fvec2) 2
+ 61: TypePointer Function 60
+ 62: TypeFunction 60 61(ptr) 61(ptr) 61(ptr)
+ 68: TypeMatrix 36(fvec3) 3
+ 69: TypePointer Function 68
+ 70: TypeFunction 68 69(ptr) 69(ptr) 69(ptr)
+ 76: TypeMatrix 48(fvec4) 4
+ 77: TypePointer Function 76
+ 78: TypeFunction 76 77(ptr) 77(ptr) 77(ptr)
+ 84: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr)
+ 93: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr)
+ 102: TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr)
+ 111: TypeMatrix 36(fvec3) 2
+ 112: TypePointer Function 111
+ 113: TypeMatrix 24(fvec2) 3
+ 114: TypePointer Function 113
+ 115: TypeMatrix 48(fvec4) 3
+ 116: TypePointer Function 115
+ 117: TypeMatrix 48(fvec4) 2
+ 118: TypePointer Function 117
+ 119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
+ 131: TypeBool
+ 132: TypePointer Function 131(bool)
+ 148: TypeInt 32 1
+ 149: TypePointer Function 148(int)
+ 175: 6(float) Constant 0
+ 187: 8(int) Constant 7
+ 217: 148(int) Constant 7
+ 235(ResType): TypeStruct 6(float) 148(int)
+ 263: 6(float) Constant 1050288283
+ 284: 6(float) Constant 1065353216
+ 288: 8(int) Constant 2
+ 352: TypeVector 148(int) 2
+ 353: TypePointer Function 352(ivec2)
+ 379: 24(fvec2) ConstantComposite 175 175
+ 380: TypeVector 131(bool) 2
+ 393: 8(int) Constant 3
+ 394: 26(ivec2) ConstantComposite 187 393
+ 437: 8(int) Constant 8
+ 438: 26(ivec2) ConstantComposite 187 437
+ 454(ResType): TypeStruct 24(fvec2) 352(ivec2)
+ 461: TypePointer Function 380(bvec2)
+ 519: 6(float) Constant 1073741824
+ 522: 8(int) Constant 1
+ 523: 26(ivec2) ConstantComposite 522 288
+ 570: 24(fvec2) ConstantComposite 284 519
+ 588: TypeVector 148(int) 3
+ 589: TypePointer Function 588(ivec3)
+ 615: 36(fvec3) ConstantComposite 175 175 175
+ 616: TypeVector 131(bool) 3
+ 629: 8(int) Constant 5
+ 630: 38(ivec3) ConstantComposite 187 393 629
+ 677: 8(int) Constant 4
+ 678: 38(ivec3) ConstantComposite 288 393 677
+ 694(ResType): TypeStruct 36(fvec3) 588(ivec3)
+ 701: TypePointer Function 616(bvec3)
+ 720: 6(float) Constant 1050253722
+ 767: 38(ivec3) ConstantComposite 522 288 393
+ 814: 6(float) Constant 1077936128
+ 815: 36(fvec3) ConstantComposite 284 519 814
+ 833: TypeVector 148(int) 4
+ 834: TypePointer Function 833(ivec4)
+ 860: 48(fvec4) ConstantComposite 175 175 175 175
+ 861: TypeVector 131(bool) 4
+ 874: 50(ivec4) ConstantComposite 187 393 629 288
+ 928: 8(int) Constant 9
+ 929: 8(int) Constant 10
+ 930: 50(ivec4) ConstantComposite 187 437 928 929
+ 946(ResType): TypeStruct 48(fvec4) 833(ivec4)
+ 953: TypePointer Function 861(bvec4)
+ 1013: 50(ivec4) ConstantComposite 522 288 393 677
+ 1060: 6(float) Constant 1082130432
+ 1061: 48(fvec4) ConstantComposite 284 519 814 1060
+ 1089: 60 ConstantComposite 379 379
+ 1090: TypeMatrix 380(bvec2) 2
+ 1155(ResType): TypeStruct 60 352(ivec2)
+ 1243: 24(fvec2) ConstantComposite 519 519
+ 1244: 60 ConstantComposite 1243 1243
+ 1272: 68 ConstantComposite 615 615 615
+ 1273: TypeMatrix 616(bvec3) 3
+ 1341(ResType): TypeStruct 68 588(ivec3)
+ 1429: 36(fvec3) ConstantComposite 814 814 814
+ 1430: 68 ConstantComposite 1429 1429 1429
+ 1458: 76 ConstantComposite 860 860 860 860
+ 1459: TypeMatrix 861(bvec4) 4
+ 1530(ResType): TypeStruct 76 833(ivec4)
+ 1618: 48(fvec4) ConstantComposite 1060 1060 1060 1060
+ 1619: 76 ConstantComposite 1618 1618 1618 1618
+ 1798(PS_OUTPUT): TypeStruct 48(fvec4)
+ 1799: TypePointer Function 1798(PS_OUTPUT)
+ 1801: 148(int) Constant 0
+ 1802: 48(fvec4) ConstantComposite 284 284 284 284
+ 1804: TypePointer Output 48(fvec4)
+ 1805(color): 1804(ptr) Variable Output
+ 1809: TypePointer Private 8(int)
+ 1810(gs_ua): 1809(ptr) Variable Private
+ 1811(gs_ub): 1809(ptr) Variable Private
+ 1812(gs_uc): 1809(ptr) Variable Private
+ 1813: TypePointer Private 26(ivec2)
+ 1814(gs_ua2): 1813(ptr) Variable Private
+ 1815(gs_ub2): 1813(ptr) Variable Private
+ 1816(gs_uc2): 1813(ptr) Variable Private
+ 1817: TypePointer Private 38(ivec3)
+ 1818(gs_ua3): 1817(ptr) Variable Private
+ 1819(gs_ub3): 1817(ptr) Variable Private
+ 1820(gs_uc3): 1817(ptr) Variable Private
+ 1821: TypePointer Private 50(ivec4)
+ 1822(gs_ua4): 1821(ptr) Variable Private
+ 1823(gs_ub4): 1821(ptr) Variable Private
+ 1824(gs_uc4): 1821(ptr) Variable Private
+ 4(main): 2 Function None 3
5: Label
- 808(r000): 122(ptr) Variable Function
- 813(r001): 91(ptr) Variable Function
- 816(r002): 91(ptr) Variable Function
- 819(r003): 122(ptr) Variable Function
- 822(r004): 91(ptr) Variable Function
- 827(r005): 826(ptr) Variable Function
- 832(r006): 831(ptr) Variable Function
- 835(r007): 91(ptr) Variable Function
- 840(r009): 91(ptr) Variable Function
- 843(r010): 91(ptr) Variable Function
- 848(r011): 91(ptr) Variable Function
- 851(r012): 91(ptr) Variable Function
- 865(r013): 91(ptr) Variable Function
- 868(r014): 91(ptr) Variable Function
- 871(r015): 831(ptr) Variable Function
- 874(r016): 91(ptr) Variable Function
- 877(r017): 91(ptr) Variable Function
- 880(r018): 91(ptr) Variable Function
- 883(r019): 91(ptr) Variable Function
- 886(r020): 91(ptr) Variable Function
- 889(r021): 91(ptr) Variable Function
- 892(r022): 91(ptr) Variable Function
- 895(r023): 7(ptr) Variable Function
- 899(r024): 7(ptr) Variable Function
- 903(r025): 91(ptr) Variable Function
- 915(r029): 91(ptr) Variable Function
- 918(r030): 91(ptr) Variable Function
- 921(r031): 91(ptr) Variable Function
- 926(r032): 831(ptr) Variable Function
- 931(r033): 831(ptr) Variable Function
- 933(r034): 91(ptr) Variable Function
- 936(r036): 91(ptr) Variable Function
- 940(r037): 91(ptr) Variable Function
- 943(r038): 91(ptr) Variable Function
- 949(r039): 91(ptr) Variable Function
- 953(r040): 952(ptr) Variable Function
- 956(r041): 952(ptr) Variable Function
- 959(r042): 91(ptr) Variable Function
- 963(r039a): 91(ptr) Variable Function
- 968(r043): 7(ptr) Variable Function
- 971(r044): 91(ptr) Variable Function
- 974(r045): 91(ptr) Variable Function
- 978(r046): 91(ptr) Variable Function
- 981(r047): 91(ptr) Variable Function
- 985(r048): 91(ptr) Variable Function
- 989(r049): 91(ptr) Variable Function
- 992(r050): 91(ptr) Variable Function
- 996(r051): 91(ptr) Variable Function
- 999(r052): 91(ptr) Variable Function
- 1003(r053): 91(ptr) Variable Function
- 1007(r054): 91(ptr) Variable Function
- 1011(r055): 831(ptr) Variable Function
- 1014(r056): 91(ptr) Variable Function
- 1017(r057): 91(ptr) Variable Function
- 1020(r058): 91(ptr) Variable Function
- 1025(r059): 91(ptr) Variable Function
- 1028(r060): 91(ptr) Variable Function
- 1035(r061): 91(ptr) Variable Function
- 1038(r062): 91(ptr) Variable Function
- 1043(r063): 91(ptr) Variable Function
- 1046(r064): 91(ptr) Variable Function
- 1050(r065): 91(ptr) Variable Function
- 1053(r066): 91(ptr) Variable Function
- 1056(r067): 91(ptr) Variable Function
- 811: 64(fvec4) Load 810(inF0)
- 812: 121(bool) All 811
- Store 808(r000) 812
- 814: 64(fvec4) Load 810(inF0)
- 815: 64(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 814
- Store 813(r001) 815
- 817: 64(fvec4) Load 810(inF0)
- 818: 64(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 817
- Store 816(r002) 818
- 820: 64(fvec4) Load 810(inF0)
- 821: 121(bool) Any 820
- Store 819(r003) 821
- 823: 64(fvec4) Load 810(inF0)
- 824: 64(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 823
- Store 822(r004) 824
- 828: 64(fvec4) Load 810(inF0)
- 829: 825(ivec4) Bitcast 828
- Store 827(r005) 829
- 833: 64(fvec4) Load 810(inF0)
- 834: 830(ivec4) Bitcast 833
- Store 832(r006) 834
- 838: 830(ivec4) Load 837(inU0)
- 839: 64(fvec4) Bitcast 838
- Store 835(r007) 839
- 841: 64(fvec4) Load 810(inF0)
- 842: 64(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 841
- Store 840(r009) 842
- 844: 64(fvec4) Load 810(inF0)
- 846: 64(fvec4) Load 845(inF1)
- 847: 64(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 844 846
- Store 843(r010) 847
- 849: 64(fvec4) Load 810(inF0)
- 850: 64(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 849
- Store 848(r011) 850
- 852: 64(fvec4) Load 810(inF0)
- 853: 64(fvec4) Load 845(inF1)
- 855: 64(fvec4) Load 854(inF2)
- 856: 64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 852 853 855
- Store 851(r012) 856
- 857: 64(fvec4) Load 810(inF0)
- 860: 859(bvec4) FOrdLessThan 857 858
- 861: 121(bool) Any 860
- SelectionMerge 863 None
- BranchConditional 861 862 863
- 862: Label
- Kill
- 863: Label
- 866: 64(fvec4) Load 810(inF0)
- 867: 64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 866
- Store 865(r013) 867
- 869: 64(fvec4) Load 810(inF0)
- 870: 64(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 869
- Store 868(r014) 870
- 873: 830(ivec4) BitCount 872
- Store 871(r015) 873
- 875: 64(fvec4) Load 810(inF0)
- 876: 64(fvec4) DPdx 875
- Store 874(r016) 876
- 878: 64(fvec4) Load 810(inF0)
- 879: 64(fvec4) DPdxCoarse 878
- Store 877(r017) 879
- 881: 64(fvec4) Load 810(inF0)
- 882: 64(fvec4) DPdxFine 881
- Store 880(r018) 882
- 884: 64(fvec4) Load 810(inF0)
- 885: 64(fvec4) DPdy 884
- Store 883(r019) 885
- 887: 64(fvec4) Load 810(inF0)
- 888: 64(fvec4) DPdyCoarse 887
- Store 886(r020) 888
- 890: 64(fvec4) Load 810(inF0)
- 891: 64(fvec4) DPdyFine 890
- Store 889(r021) 891
- 893: 64(fvec4) Load 810(inF0)
- 894: 64(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 893
- Store 892(r022) 894
- 896: 64(fvec4) Load 810(inF0)
- 897: 64(fvec4) Load 845(inF1)
- 898: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 896 897
- Store 895(r023) 898
- 900: 64(fvec4) Load 810(inF0)
- 901: 64(fvec4) Load 845(inF1)
- 902: 6(float) Dot 900 901
- Store 899(r024) 902
- 905: 904(ptr) AccessChain 810(inF0) 512
- 906: 6(float) Load 905
- 907: 904(ptr) AccessChain 845(inF1) 512
- 908: 6(float) Load 907
- 909: 6(float) FMul 906 908
- 910: 904(ptr) AccessChain 810(inF0) 278
- 911: 6(float) Load 910
- 912: 904(ptr) AccessChain 845(inF1) 383
- 913: 6(float) Load 912
- 914: 64(fvec4) CompositeConstruct 274 909 911 913
- Store 903(r025) 914
- 916: 64(fvec4) Load 810(inF0)
- 917: 64(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 916
- Store 915(r029) 917
- 919: 64(fvec4) Load 810(inF0)
- 920: 64(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 919
- Store 918(r030) 920
- 922: 64(fvec4) Load 810(inF0)
- 923: 64(fvec4) Load 845(inF1)
- 924: 64(fvec4) Load 854(inF2)
- 925: 64(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 922 923 924
- Store 921(r031) 925
- 930: 830(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 929
- Store 926(r032) 930
- 932: 830(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 929
- Store 931(r033) 932
- 934: 64(fvec4) Load 810(inF0)
- 935: 64(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 934
- Store 933(r034) 935
- 937: 64(fvec4) Load 810(inF0)
- 938: 64(fvec4) Load 845(inF1)
- 939: 64(fvec4) FMod 937 938
- Store 936(r036) 939
- 941: 64(fvec4) Load 810(inF0)
- 942: 64(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 941
- Store 940(r037) 942
- 944: 64(fvec4) Load 810(inF0)
- 946:945(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 944
- 947: 825(ivec4) CompositeExtract 946 1
- Store 845(inF1) 947
- 948: 64(fvec4) CompositeExtract 946 0
- Store 943(r038) 948
- 950: 64(fvec4) Load 810(inF0)
- 951: 64(fvec4) Fwidth 950
- Store 949(r039) 951
- 954: 64(fvec4) Load 810(inF0)
- 955: 859(bvec4) IsInf 954
- Store 953(r040) 955
- 957: 64(fvec4) Load 810(inF0)
- 958: 859(bvec4) IsNan 957
- Store 956(r041) 958
- 960: 64(fvec4) Load 810(inF0)
- 961: 64(fvec4) Load 845(inF1)
- 962: 64(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 960 961
- Store 959(r042) 962
- 964: 64(fvec4) Load 810(inF0)
- 965: 64(fvec4) Load 845(inF1)
- 966: 64(fvec4) Load 854(inF2)
- 967: 64(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 964 965 966
- Store 963(r039a) 967
- 969: 64(fvec4) Load 810(inF0)
- 970: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 969
- Store 968(r043) 970
- 972: 64(fvec4) Load 810(inF0)
- 973: 64(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 972
- Store 971(r044) 973
- 975: 64(fvec4) Load 810(inF0)
- 976: 64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 975
- 977: 64(fvec4) VectorTimesScalar 976 253
- Store 974(r045) 977
- 979: 64(fvec4) Load 810(inF0)
- 980: 64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 979
- Store 978(r046) 980
- 982: 64(fvec4) Load 810(inF0)
- 983: 64(fvec4) Load 845(inF1)
- 984: 64(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 982 983
- Store 981(r047) 984
- 986: 64(fvec4) Load 810(inF0)
- 987: 64(fvec4) Load 845(inF1)
- 988: 64(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 986 987
- Store 985(r048) 988
- 990: 64(fvec4) Load 810(inF0)
- 991: 64(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 990
- Store 989(r049) 991
- 993: 64(fvec4) Load 810(inF0)
- 994: 64(fvec4) Load 845(inF1)
- 995: 64(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 993 994
- Store 992(r050) 995
- 997: 64(fvec4) Load 810(inF0)
- 998: 64(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 997
- Store 996(r051) 998
- 1000: 64(fvec4) Load 810(inF0)
- 1001: 64(fvec4) CompositeConstruct 274 274 274 274
- 1002: 64(fvec4) FDiv 1001 1000
- Store 999(r052) 1002
- 1004: 64(fvec4) Load 810(inF0)
- 1005: 64(fvec4) Load 845(inF1)
- 1006: 64(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1004 1005
- Store 1003(r053) 1006
- 1008: 64(fvec4) Load 810(inF0)
- 1009: 64(fvec4) Load 845(inF1)
- 1010: 64(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1008 1009 509
- Store 1007(r054) 1010
- 1013: 830(ivec4) BitReverse 1012
- Store 1011(r055) 1013
- 1015: 64(fvec4) Load 810(inF0)
- 1016: 64(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1015
- Store 1014(r056) 1016
- 1018: 64(fvec4) Load 810(inF0)
- 1019: 64(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1018
- Store 1017(r057) 1019
- 1021: 64(fvec4) Load 810(inF0)
- 1022: 64(fvec4) CompositeConstruct 165 165 165 165
- 1023: 64(fvec4) CompositeConstruct 274 274 274 274
- 1024: 64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1021 1022 1023
- Store 1020(r058) 1024
- 1026: 64(fvec4) Load 810(inF0)
- 1027: 64(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1026
- Store 1025(r059) 1027
- 1029: 64(fvec4) Load 810(inF0)
- 1030: 64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1029
- Store 1028(r060) 1030
- 1031: 64(fvec4) Load 810(inF0)
- 1032: 64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1031
- Store 845(inF1) 1032
- 1033: 64(fvec4) Load 810(inF0)
- 1034: 64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1033
- Store 854(inF2) 1034
- 1036: 64(fvec4) Load 810(inF0)
- 1037: 64(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1036
- Store 1035(r061) 1037
- 1039: 64(fvec4) Load 810(inF0)
- 1040: 64(fvec4) Load 845(inF1)
- 1041: 64(fvec4) Load 854(inF2)
- 1042: 64(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1039 1040 1041
- Store 1038(r062) 1042
- 1044: 64(fvec4) Load 810(inF0)
- 1045: 64(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1044
- Store 1043(r063) 1045
- 1047: 64(fvec4) Load 810(inF0)
- 1048: 64(fvec4) Load 845(inF1)
- 1049: 64(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1047 1048
- Store 1046(r064) 1049
- 1051: 64(fvec4) Load 810(inF0)
- 1052: 64(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1051
- Store 1050(r065) 1052
- 1054: 64(fvec4) Load 810(inF0)
- 1055: 64(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1054
- Store 1053(r066) 1055
- 1057: 64(fvec4) Load 810(inF0)
- 1058: 64(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1057
- Store 1056(r067) 1058
- ReturnValue 1060
+ 1800(ps_output): 1799(ptr) Variable Function
+ 1803: 49(ptr) AccessChain 1800(ps_output) 1801
+ Store 1803 1802
+ 1806: 49(ptr) AccessChain 1800(ps_output) 1801
+ 1807: 48(fvec4) Load 1806
+ Store 1805(color) 1807
+ Return
FunctionEnd
16(PixelShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10
11(inF0): 7(ptr) FunctionParameter
@@ -6525,266 +6283,266 @@
14(inU0): 9(ptr) FunctionParameter
15(inU1): 9(ptr) FunctionParameter
17: Label
- 123(r000): 122(ptr) Variable Function
- 126(r001): 7(ptr) Variable Function
- 129(r002): 7(ptr) Variable Function
- 132(r003): 122(ptr) Variable Function
- 135(r004): 7(ptr) Variable Function
- 140(r005): 139(ptr) Variable Function
- 143(r006): 9(ptr) Variable Function
- 146(r007): 7(ptr) Variable Function
- 149(r009): 7(ptr) Variable Function
- 152(r010): 7(ptr) Variable Function
- 156(r011): 7(ptr) Variable Function
- 159(r012): 7(ptr) Variable Function
- 170(r014): 7(ptr) Variable Function
- 173(r015): 7(ptr) Variable Function
- 176(r016): 9(ptr) Variable Function
- 179(r017): 7(ptr) Variable Function
- 182(r018): 7(ptr) Variable Function
- 185(r019): 7(ptr) Variable Function
- 188(r020): 7(ptr) Variable Function
- 191(r021): 7(ptr) Variable Function
- 194(r022): 7(ptr) Variable Function
- 197(r023): 7(ptr) Variable Function
- 200(r027): 7(ptr) Variable Function
- 203(r028): 7(ptr) Variable Function
- 206(r029): 9(ptr) Variable Function
- 210(r030): 9(ptr) Variable Function
- 213(r031): 7(ptr) Variable Function
- 216(r033): 7(ptr) Variable Function
- 220(r034): 7(ptr) Variable Function
- 223(r035): 7(ptr) Variable Function
- 229(r036): 7(ptr) Variable Function
- 232(r037): 122(ptr) Variable Function
- 235(r038): 122(ptr) Variable Function
- 238(r039): 7(ptr) Variable Function
- 242(r039a): 7(ptr) Variable Function
- 247(r040): 7(ptr) Variable Function
- 250(r041): 7(ptr) Variable Function
- 255(r042): 7(ptr) Variable Function
- 258(r043): 7(ptr) Variable Function
- 262(r044): 7(ptr) Variable Function
- 266(r045): 7(ptr) Variable Function
- 270(r046): 7(ptr) Variable Function
- 273(r047): 7(ptr) Variable Function
- 277(r048): 9(ptr) Variable Function
- 280(r049): 7(ptr) Variable Function
- 283(r050): 7(ptr) Variable Function
- 286(r051): 7(ptr) Variable Function
- 289(r052): 7(ptr) Variable Function
- 292(r053): 7(ptr) Variable Function
- 299(r055): 7(ptr) Variable Function
- 302(r056): 7(ptr) Variable Function
- 307(r057): 7(ptr) Variable Function
- 310(r058): 7(ptr) Variable Function
- 314(r059): 7(ptr) Variable Function
- 317(r060): 7(ptr) Variable Function
- 320(r061): 7(ptr) Variable Function
- 124: 6(float) Load 11(inF0)
- 125: 121(bool) All 124
- Store 123(r000) 125
- 127: 6(float) Load 11(inF0)
- 128: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 127
- Store 126(r001) 128
- 130: 6(float) Load 11(inF0)
- 131: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 130
- Store 129(r002) 131
- 133: 6(float) Load 11(inF0)
- 134: 121(bool) Any 133
- Store 132(r003) 134
- 136: 6(float) Load 11(inF0)
- 137: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 136
- Store 135(r004) 137
- 141: 6(float) Load 11(inF0)
- 142: 138(int) Bitcast 141
- Store 140(r005) 142
- 144: 6(float) Load 11(inF0)
- 145: 8(int) Bitcast 144
- Store 143(r006) 145
- 147: 8(int) Load 14(inU0)
- 148: 6(float) Bitcast 147
- Store 146(r007) 148
- 150: 6(float) Load 11(inF0)
- 151: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 150
- Store 149(r009) 151
- 153: 6(float) Load 11(inF0)
- 154: 6(float) Load 12(inF1)
- 155: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 153 154
- Store 152(r010) 155
- 157: 6(float) Load 11(inF0)
- 158: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 157
- Store 156(r011) 158
+ 133(r000): 132(ptr) Variable Function
+ 136(r001): 7(ptr) Variable Function
+ 139(r002): 7(ptr) Variable Function
+ 142(r003): 132(ptr) Variable Function
+ 145(r004): 7(ptr) Variable Function
+ 150(r005): 149(ptr) Variable Function
+ 153(r006): 9(ptr) Variable Function
+ 156(r007): 7(ptr) Variable Function
+ 159(r009): 7(ptr) Variable Function
+ 162(r010): 7(ptr) Variable Function
+ 166(r011): 7(ptr) Variable Function
+ 169(r012): 7(ptr) Variable Function
+ 180(r014): 7(ptr) Variable Function
+ 183(r015): 7(ptr) Variable Function
+ 186(r016): 9(ptr) Variable Function
+ 189(r017): 7(ptr) Variable Function
+ 192(r018): 7(ptr) Variable Function
+ 195(r019): 7(ptr) Variable Function
+ 198(r020): 7(ptr) Variable Function
+ 201(r021): 7(ptr) Variable Function
+ 204(r022): 7(ptr) Variable Function
+ 207(r023): 7(ptr) Variable Function
+ 210(r027): 7(ptr) Variable Function
+ 213(r028): 7(ptr) Variable Function
+ 216(r029): 9(ptr) Variable Function
+ 220(r030): 9(ptr) Variable Function
+ 223(r031): 7(ptr) Variable Function
+ 226(r033): 7(ptr) Variable Function
+ 230(r034): 7(ptr) Variable Function
+ 233(r035): 7(ptr) Variable Function
+ 239(r036): 7(ptr) Variable Function
+ 242(r037): 132(ptr) Variable Function
+ 245(r038): 132(ptr) Variable Function
+ 248(r039): 7(ptr) Variable Function
+ 252(r039a): 7(ptr) Variable Function
+ 257(r040): 7(ptr) Variable Function
+ 260(r041): 7(ptr) Variable Function
+ 265(r042): 7(ptr) Variable Function
+ 268(r043): 7(ptr) Variable Function
+ 272(r044): 7(ptr) Variable Function
+ 276(r045): 7(ptr) Variable Function
+ 280(r046): 7(ptr) Variable Function
+ 283(r047): 7(ptr) Variable Function
+ 287(r048): 9(ptr) Variable Function
+ 290(r049): 7(ptr) Variable Function
+ 293(r050): 7(ptr) Variable Function
+ 296(r051): 7(ptr) Variable Function
+ 299(r052): 7(ptr) Variable Function
+ 302(r053): 7(ptr) Variable Function
+ 309(r055): 7(ptr) Variable Function
+ 312(r056): 7(ptr) Variable Function
+ 317(r057): 7(ptr) Variable Function
+ 320(r058): 7(ptr) Variable Function
+ 324(r059): 7(ptr) Variable Function
+ 327(r060): 7(ptr) Variable Function
+ 330(r061): 7(ptr) Variable Function
+ 134: 6(float) Load 11(inF0)
+ 135: 131(bool) All 134
+ Store 133(r000) 135
+ 137: 6(float) Load 11(inF0)
+ 138: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 137
+ Store 136(r001) 138
+ 140: 6(float) Load 11(inF0)
+ 141: 6(float) ExtInst 1(GLSL.std.450) 17(Acos) 140
+ Store 139(r002) 141
+ 143: 6(float) Load 11(inF0)
+ 144: 131(bool) Any 143
+ Store 142(r003) 144
+ 146: 6(float) Load 11(inF0)
+ 147: 6(float) ExtInst 1(GLSL.std.450) 16(Asin) 146
+ Store 145(r004) 147
+ 151: 6(float) Load 11(inF0)
+ 152: 148(int) Bitcast 151
+ Store 150(r005) 152
+ 154: 6(float) Load 11(inF0)
+ 155: 8(int) Bitcast 154
+ Store 153(r006) 155
+ 157: 8(int) Load 14(inU0)
+ 158: 6(float) Bitcast 157
+ Store 156(r007) 158
160: 6(float) Load 11(inF0)
- 161: 6(float) Load 12(inF1)
- 162: 6(float) Load 13(inF2)
- 163: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 160 161 162
- Store 159(r012) 163
- 164: 6(float) Load 11(inF0)
- 166: 121(bool) FOrdLessThan 164 165
- SelectionMerge 168 None
- BranchConditional 166 167 168
- 167: Label
- Kill
- 168: Label
- 171: 6(float) Load 11(inF0)
- 172: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 171
- Store 170(r014) 172
+ 161: 6(float) ExtInst 1(GLSL.std.450) 18(Atan) 160
+ Store 159(r009) 161
+ 163: 6(float) Load 11(inF0)
+ 164: 6(float) Load 12(inF1)
+ 165: 6(float) ExtInst 1(GLSL.std.450) 25(Atan2) 163 164
+ Store 162(r010) 165
+ 167: 6(float) Load 11(inF0)
+ 168: 6(float) ExtInst 1(GLSL.std.450) 9(Ceil) 167
+ Store 166(r011) 168
+ 170: 6(float) Load 11(inF0)
+ 171: 6(float) Load 12(inF1)
+ 172: 6(float) Load 13(inF2)
+ 173: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 170 171 172
+ Store 169(r012) 173
174: 6(float) Load 11(inF0)
- 175: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 174
- Store 173(r015) 175
- 178: 8(int) BitCount 177
- Store 176(r016) 178
- 180: 6(float) Load 11(inF0)
- 181: 6(float) DPdx 180
- Store 179(r017) 181
- 183: 6(float) Load 11(inF0)
- 184: 6(float) DPdxCoarse 183
- Store 182(r018) 184
- 186: 6(float) Load 11(inF0)
- 187: 6(float) DPdxFine 186
- Store 185(r019) 187
- 189: 6(float) Load 11(inF0)
- 190: 6(float) DPdy 189
- Store 188(r020) 190
- 192: 6(float) Load 11(inF0)
- 193: 6(float) DPdyCoarse 192
- Store 191(r021) 193
- 195: 6(float) Load 11(inF0)
- 196: 6(float) DPdyFine 195
- Store 194(r022) 196
- 198: 6(float) Load 11(inF0)
- 199: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 198
- Store 197(r023) 199
- 201: 6(float) Load 11(inF0)
- 202: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 201
- Store 200(r027) 202
- 204: 6(float) Load 11(inF0)
- 205: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 204
- Store 203(r028) 205
- 208: 138(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 207
- 209: 8(int) Bitcast 208
- Store 206(r029) 209
- 211: 138(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 207
- 212: 8(int) Bitcast 211
- Store 210(r030) 212
+ 176: 131(bool) FOrdLessThan 174 175
+ SelectionMerge 178 None
+ BranchConditional 176 177 178
+ 177: Label
+ Kill
+ 178: Label
+ 181: 6(float) Load 11(inF0)
+ 182: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 181
+ Store 180(r014) 182
+ 184: 6(float) Load 11(inF0)
+ 185: 6(float) ExtInst 1(GLSL.std.450) 20(Cosh) 184
+ Store 183(r015) 185
+ 188: 8(int) BitCount 187
+ Store 186(r016) 188
+ 190: 6(float) Load 11(inF0)
+ 191: 6(float) DPdx 190
+ Store 189(r017) 191
+ 193: 6(float) Load 11(inF0)
+ 194: 6(float) DPdxCoarse 193
+ Store 192(r018) 194
+ 196: 6(float) Load 11(inF0)
+ 197: 6(float) DPdxFine 196
+ Store 195(r019) 197
+ 199: 6(float) Load 11(inF0)
+ 200: 6(float) DPdy 199
+ Store 198(r020) 200
+ 202: 6(float) Load 11(inF0)
+ 203: 6(float) DPdyCoarse 202
+ Store 201(r021) 203
+ 205: 6(float) Load 11(inF0)
+ 206: 6(float) DPdyFine 205
+ Store 204(r022) 206
+ 208: 6(float) Load 11(inF0)
+ 209: 6(float) ExtInst 1(GLSL.std.450) 12(Degrees) 208
+ Store 207(r023) 209
+ 211: 6(float) Load 11(inF0)
+ 212: 6(float) ExtInst 1(GLSL.std.450) 27(Exp) 211
+ Store 210(r027) 212
214: 6(float) Load 11(inF0)
- 215: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 214
- Store 213(r031) 215
- 217: 6(float) Load 11(inF0)
- 218: 6(float) Load 12(inF1)
- 219: 6(float) FMod 217 218
- Store 216(r033) 219
- 221: 6(float) Load 11(inF0)
- 222: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 221
- Store 220(r034) 222
+ 215: 6(float) ExtInst 1(GLSL.std.450) 29(Exp2) 214
+ Store 213(r028) 215
+ 218: 148(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 217
+ 219: 8(int) Bitcast 218
+ Store 216(r029) 219
+ 221: 148(int) ExtInst 1(GLSL.std.450) 73(FindILsb) 217
+ 222: 8(int) Bitcast 221
+ Store 220(r030) 222
224: 6(float) Load 11(inF0)
- 226:225(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 224
- 227: 138(int) CompositeExtract 226 1
- Store 12(inF1) 227
- 228: 6(float) CompositeExtract 226 0
- Store 223(r035) 228
- 230: 6(float) Load 11(inF0)
- 231: 6(float) Fwidth 230
- Store 229(r036) 231
- 233: 6(float) Load 11(inF0)
- 234: 121(bool) IsInf 233
- Store 232(r037) 234
- 236: 6(float) Load 11(inF0)
- 237: 121(bool) IsNan 236
- Store 235(r038) 237
- 239: 6(float) Load 11(inF0)
- 240: 6(float) Load 12(inF1)
- 241: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 239 240
- Store 238(r039) 241
+ 225: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 224
+ Store 223(r031) 225
+ 227: 6(float) Load 11(inF0)
+ 228: 6(float) Load 12(inF1)
+ 229: 6(float) FMod 227 228
+ Store 226(r033) 229
+ 231: 6(float) Load 11(inF0)
+ 232: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 231
+ Store 230(r034) 232
+ 234: 6(float) Load 11(inF0)
+ 236:235(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 234
+ 237: 148(int) CompositeExtract 236 1
+ Store 12(inF1) 237
+ 238: 6(float) CompositeExtract 236 0
+ Store 233(r035) 238
+ 240: 6(float) Load 11(inF0)
+ 241: 6(float) Fwidth 240
+ Store 239(r036) 241
243: 6(float) Load 11(inF0)
- 244: 6(float) Load 12(inF1)
- 245: 6(float) Load 13(inF2)
- 246: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 243 244 245
- Store 242(r039a) 246
- 248: 6(float) Load 11(inF0)
- 249: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 248
- Store 247(r040) 249
- 251: 6(float) Load 11(inF0)
- 252: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 251
- 254: 6(float) FMul 252 253
- Store 250(r041) 254
- 256: 6(float) Load 11(inF0)
- 257: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 256
- Store 255(r042) 257
- 259: 6(float) Load 11(inF0)
- 260: 6(float) Load 12(inF1)
- 261: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 259 260
- Store 258(r043) 261
- 263: 6(float) Load 11(inF0)
- 264: 6(float) Load 12(inF1)
- 265: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 263 264
- Store 262(r044) 265
- 267: 6(float) Load 11(inF0)
- 268: 6(float) Load 12(inF1)
- 269: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 267 268
- Store 266(r045) 269
- 271: 6(float) Load 11(inF0)
- 272: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 271
- Store 270(r046) 272
- 275: 6(float) Load 11(inF0)
- 276: 6(float) FDiv 274 275
- Store 273(r047) 276
- 279: 8(int) BitReverse 278
- Store 277(r048) 279
+ 244: 131(bool) IsInf 243
+ Store 242(r037) 244
+ 246: 6(float) Load 11(inF0)
+ 247: 131(bool) IsNan 246
+ Store 245(r038) 247
+ 249: 6(float) Load 11(inF0)
+ 250: 6(float) Load 12(inF1)
+ 251: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 249 250
+ Store 248(r039) 251
+ 253: 6(float) Load 11(inF0)
+ 254: 6(float) Load 12(inF1)
+ 255: 6(float) Load 13(inF2)
+ 256: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 253 254 255
+ Store 252(r039a) 256
+ 258: 6(float) Load 11(inF0)
+ 259: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 258
+ Store 257(r040) 259
+ 261: 6(float) Load 11(inF0)
+ 262: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 261
+ 264: 6(float) FMul 262 263
+ Store 260(r041) 264
+ 266: 6(float) Load 11(inF0)
+ 267: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 266
+ Store 265(r042) 267
+ 269: 6(float) Load 11(inF0)
+ 270: 6(float) Load 12(inF1)
+ 271: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 269 270
+ Store 268(r043) 271
+ 273: 6(float) Load 11(inF0)
+ 274: 6(float) Load 12(inF1)
+ 275: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 273 274
+ Store 272(r044) 275
+ 277: 6(float) Load 11(inF0)
+ 278: 6(float) Load 12(inF1)
+ 279: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 277 278
+ Store 276(r045) 279
281: 6(float) Load 11(inF0)
- 282: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 281
- Store 280(r049) 282
- 284: 6(float) Load 11(inF0)
- 285: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 284
- Store 283(r050) 285
- 287: 6(float) Load 11(inF0)
- 288: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 287 165 274
- Store 286(r051) 288
- 290: 6(float) Load 11(inF0)
- 291: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 290
- Store 289(r052) 291
- 293: 6(float) Load 11(inF0)
- 294: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 293
- Store 292(r053) 294
- 295: 6(float) Load 11(inF0)
- 296: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 295
- Store 12(inF1) 296
+ 282: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 281
+ Store 280(r046) 282
+ 285: 6(float) Load 11(inF0)
+ 286: 6(float) FDiv 284 285
+ Store 283(r047) 286
+ 289: 8(int) BitReverse 288
+ Store 287(r048) 289
+ 291: 6(float) Load 11(inF0)
+ 292: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 291
+ Store 290(r049) 292
+ 294: 6(float) Load 11(inF0)
+ 295: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 294
+ Store 293(r050) 295
297: 6(float) Load 11(inF0)
- 298: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 297
- Store 13(inF2) 298
+ 298: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 297 175 284
+ Store 296(r051) 298
300: 6(float) Load 11(inF0)
- 301: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 300
- Store 299(r055) 301
+ 301: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 300
+ Store 299(r052) 301
303: 6(float) Load 11(inF0)
- 304: 6(float) Load 12(inF1)
- 305: 6(float) Load 13(inF2)
- 306: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 303 304 305
- Store 302(r056) 306
- 308: 6(float) Load 11(inF0)
- 309: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 308
- Store 307(r057) 309
- 311: 6(float) Load 11(inF0)
- 312: 6(float) Load 12(inF1)
- 313: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 311 312
- Store 310(r058) 313
- 315: 6(float) Load 11(inF0)
- 316: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 315
- Store 314(r059) 316
+ 304: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 303
+ Store 302(r053) 304
+ 305: 6(float) Load 11(inF0)
+ 306: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 305
+ Store 12(inF1) 306
+ 307: 6(float) Load 11(inF0)
+ 308: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 307
+ Store 13(inF2) 308
+ 310: 6(float) Load 11(inF0)
+ 311: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 310
+ Store 309(r055) 311
+ 313: 6(float) Load 11(inF0)
+ 314: 6(float) Load 12(inF1)
+ 315: 6(float) Load 13(inF2)
+ 316: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 313 314 315
+ Store 312(r056) 316
318: 6(float) Load 11(inF0)
- 319: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 318
- Store 317(r060) 319
+ 319: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 318
+ Store 317(r057) 319
321: 6(float) Load 11(inF0)
- 322: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 321
- Store 320(r061) 322
- ReturnValue 165
+ 322: 6(float) Load 12(inF1)
+ 323: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 321 322
+ Store 320(r058) 323
+ 325: 6(float) Load 11(inF0)
+ 326: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 325
+ Store 324(r059) 326
+ 328: 6(float) Load 11(inF0)
+ 329: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 328
+ Store 327(r060) 329
+ 331: 6(float) Load 11(inF0)
+ 332: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 331
+ Store 330(r061) 332
+ ReturnValue 175
FunctionEnd
22(PixelShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18
19(inF0): 7(ptr) FunctionParameter
20(inF1): 7(ptr) FunctionParameter
21(inF2): 7(ptr) FunctionParameter
23: Label
- ReturnValue 165
+ ReturnValue 175
FunctionEnd
34(PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2;): 24(fvec2) Function None 28
29(inF0): 25(ptr) FunctionParameter
@@ -6793,295 +6551,295 @@
32(inU0): 27(ptr) FunctionParameter
33(inU1): 27(ptr) FunctionParameter
35: Label
- 327(r000): 122(ptr) Variable Function
- 330(r001): 25(ptr) Variable Function
- 333(r002): 25(ptr) Variable Function
- 336(r003): 122(ptr) Variable Function
- 339(r004): 25(ptr) Variable Function
- 344(r005): 343(ptr) Variable Function
- 347(r006): 27(ptr) Variable Function
- 350(r007): 25(ptr) Variable Function
- 353(r009): 25(ptr) Variable Function
- 356(r010): 25(ptr) Variable Function
- 360(r011): 25(ptr) Variable Function
- 363(r012): 25(ptr) Variable Function
- 376(r013): 25(ptr) Variable Function
- 379(r015): 25(ptr) Variable Function
- 382(r016): 27(ptr) Variable Function
- 386(r017): 25(ptr) Variable Function
- 389(r018): 25(ptr) Variable Function
- 392(r019): 25(ptr) Variable Function
- 395(r020): 25(ptr) Variable Function
- 398(r021): 25(ptr) Variable Function
- 401(r022): 25(ptr) Variable Function
- 404(r023): 25(ptr) Variable Function
- 407(r026): 7(ptr) Variable Function
- 411(r027): 7(ptr) Variable Function
- 415(r028): 25(ptr) Variable Function
- 418(r029): 25(ptr) Variable Function
- 421(r030): 25(ptr) Variable Function
- 426(r031): 27(ptr) Variable Function
- 430(r032): 27(ptr) Variable Function
- 432(r033): 25(ptr) Variable Function
- 435(r035): 25(ptr) Variable Function
- 439(r036): 25(ptr) Variable Function
- 442(r037): 25(ptr) Variable Function
- 448(r038): 25(ptr) Variable Function
- 452(r039): 451(ptr) Variable Function
- 455(r040): 451(ptr) Variable Function
- 458(r041): 25(ptr) Variable Function
- 462(r039a): 25(ptr) Variable Function
- 467(r042): 7(ptr) Variable Function
- 470(r043): 25(ptr) Variable Function
- 473(r044): 25(ptr) Variable Function
- 477(r045): 25(ptr) Variable Function
- 480(r046): 25(ptr) Variable Function
- 484(r047): 25(ptr) Variable Function
- 488(r048): 25(ptr) Variable Function
- 491(r049): 25(ptr) Variable Function
- 495(r050): 25(ptr) Variable Function
- 498(r051): 25(ptr) Variable Function
- 502(r052): 25(ptr) Variable Function
- 506(r053): 25(ptr) Variable Function
- 511(r054): 27(ptr) Variable Function
- 515(r055): 25(ptr) Variable Function
- 518(r056): 25(ptr) Variable Function
- 521(r057): 25(ptr) Variable Function
- 526(r058): 25(ptr) Variable Function
- 529(r059): 25(ptr) Variable Function
- 536(r060): 25(ptr) Variable Function
- 539(r061): 25(ptr) Variable Function
- 544(r062): 25(ptr) Variable Function
- 547(r063): 25(ptr) Variable Function
- 551(r064): 25(ptr) Variable Function
- 554(r065): 25(ptr) Variable Function
- 557(r066): 25(ptr) Variable Function
- 328: 24(fvec2) Load 29(inF0)
- 329: 121(bool) All 328
- Store 327(r000) 329
- 331: 24(fvec2) Load 29(inF0)
- 332: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 331
- Store 330(r001) 332
- 334: 24(fvec2) Load 29(inF0)
- 335: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 334
- Store 333(r002) 335
- 337: 24(fvec2) Load 29(inF0)
- 338: 121(bool) Any 337
- Store 336(r003) 338
- 340: 24(fvec2) Load 29(inF0)
- 341: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 340
- Store 339(r004) 341
- 345: 24(fvec2) Load 29(inF0)
- 346: 342(ivec2) Bitcast 345
- Store 344(r005) 346
- 348: 24(fvec2) Load 29(inF0)
- 349: 26(ivec2) Bitcast 348
- Store 347(r006) 349
- 351: 26(ivec2) Load 32(inU0)
- 352: 24(fvec2) Bitcast 351
- Store 350(r007) 352
- 354: 24(fvec2) Load 29(inF0)
- 355: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 354
- Store 353(r009) 355
- 357: 24(fvec2) Load 29(inF0)
- 358: 24(fvec2) Load 30(inF1)
- 359: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 357 358
- Store 356(r010) 359
- 361: 24(fvec2) Load 29(inF0)
- 362: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 361
- Store 360(r011) 362
+ 337(r000): 132(ptr) Variable Function
+ 340(r001): 25(ptr) Variable Function
+ 343(r002): 25(ptr) Variable Function
+ 346(r003): 132(ptr) Variable Function
+ 349(r004): 25(ptr) Variable Function
+ 354(r005): 353(ptr) Variable Function
+ 357(r006): 27(ptr) Variable Function
+ 360(r007): 25(ptr) Variable Function
+ 363(r009): 25(ptr) Variable Function
+ 366(r010): 25(ptr) Variable Function
+ 370(r011): 25(ptr) Variable Function
+ 373(r012): 25(ptr) Variable Function
+ 386(r013): 25(ptr) Variable Function
+ 389(r015): 25(ptr) Variable Function
+ 392(r016): 27(ptr) Variable Function
+ 396(r017): 25(ptr) Variable Function
+ 399(r018): 25(ptr) Variable Function
+ 402(r019): 25(ptr) Variable Function
+ 405(r020): 25(ptr) Variable Function
+ 408(r021): 25(ptr) Variable Function
+ 411(r022): 25(ptr) Variable Function
+ 414(r023): 25(ptr) Variable Function
+ 417(r026): 7(ptr) Variable Function
+ 421(r027): 7(ptr) Variable Function
+ 425(r028): 25(ptr) Variable Function
+ 428(r029): 25(ptr) Variable Function
+ 431(r030): 25(ptr) Variable Function
+ 436(r031): 27(ptr) Variable Function
+ 440(r032): 27(ptr) Variable Function
+ 442(r033): 25(ptr) Variable Function
+ 445(r035): 25(ptr) Variable Function
+ 449(r036): 25(ptr) Variable Function
+ 452(r037): 25(ptr) Variable Function
+ 458(r038): 25(ptr) Variable Function
+ 462(r039): 461(ptr) Variable Function
+ 465(r040): 461(ptr) Variable Function
+ 468(r041): 25(ptr) Variable Function
+ 472(r039a): 25(ptr) Variable Function
+ 477(r042): 7(ptr) Variable Function
+ 480(r043): 25(ptr) Variable Function
+ 483(r044): 25(ptr) Variable Function
+ 487(r045): 25(ptr) Variable Function
+ 490(r046): 25(ptr) Variable Function
+ 494(r047): 25(ptr) Variable Function
+ 498(r048): 25(ptr) Variable Function
+ 501(r049): 25(ptr) Variable Function
+ 505(r050): 25(ptr) Variable Function
+ 508(r051): 25(ptr) Variable Function
+ 512(r052): 25(ptr) Variable Function
+ 516(r053): 25(ptr) Variable Function
+ 521(r054): 27(ptr) Variable Function
+ 525(r055): 25(ptr) Variable Function
+ 528(r056): 25(ptr) Variable Function
+ 531(r057): 25(ptr) Variable Function
+ 536(r058): 25(ptr) Variable Function
+ 539(r059): 25(ptr) Variable Function
+ 546(r060): 25(ptr) Variable Function
+ 549(r061): 25(ptr) Variable Function
+ 554(r062): 25(ptr) Variable Function
+ 557(r063): 25(ptr) Variable Function
+ 561(r064): 25(ptr) Variable Function
+ 564(r065): 25(ptr) Variable Function
+ 567(r066): 25(ptr) Variable Function
+ 338: 24(fvec2) Load 29(inF0)
+ 339: 131(bool) All 338
+ Store 337(r000) 339
+ 341: 24(fvec2) Load 29(inF0)
+ 342: 24(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 341
+ Store 340(r001) 342
+ 344: 24(fvec2) Load 29(inF0)
+ 345: 24(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 344
+ Store 343(r002) 345
+ 347: 24(fvec2) Load 29(inF0)
+ 348: 131(bool) Any 347
+ Store 346(r003) 348
+ 350: 24(fvec2) Load 29(inF0)
+ 351: 24(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 350
+ Store 349(r004) 351
+ 355: 24(fvec2) Load 29(inF0)
+ 356: 352(ivec2) Bitcast 355
+ Store 354(r005) 356
+ 358: 24(fvec2) Load 29(inF0)
+ 359: 26(ivec2) Bitcast 358
+ Store 357(r006) 359
+ 361: 26(ivec2) Load 32(inU0)
+ 362: 24(fvec2) Bitcast 361
+ Store 360(r007) 362
364: 24(fvec2) Load 29(inF0)
- 365: 24(fvec2) Load 30(inF1)
- 366: 24(fvec2) Load 31(inF2)
- 367: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 364 365 366
- Store 363(r012) 367
- 368: 24(fvec2) Load 29(inF0)
- 371: 370(bvec2) FOrdLessThan 368 369
- 372: 121(bool) Any 371
- SelectionMerge 374 None
- BranchConditional 372 373 374
- 373: Label
+ 365: 24(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 364
+ Store 363(r009) 365
+ 367: 24(fvec2) Load 29(inF0)
+ 368: 24(fvec2) Load 30(inF1)
+ 369: 24(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 367 368
+ Store 366(r010) 369
+ 371: 24(fvec2) Load 29(inF0)
+ 372: 24(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 371
+ Store 370(r011) 372
+ 374: 24(fvec2) Load 29(inF0)
+ 375: 24(fvec2) Load 30(inF1)
+ 376: 24(fvec2) Load 31(inF2)
+ 377: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 374 375 376
+ Store 373(r012) 377
+ 378: 24(fvec2) Load 29(inF0)
+ 381: 380(bvec2) FOrdLessThan 378 379
+ 382: 131(bool) Any 381
+ SelectionMerge 384 None
+ BranchConditional 382 383 384
+ 383: Label
Kill
- 374: Label
- 377: 24(fvec2) Load 29(inF0)
- 378: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 377
- Store 376(r013) 378
- 380: 24(fvec2) Load 29(inF0)
- 381: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 380
- Store 379(r015) 381
- 385: 26(ivec2) BitCount 384
- Store 382(r016) 385
+ 384: Label
387: 24(fvec2) Load 29(inF0)
- 388: 24(fvec2) DPdx 387
- Store 386(r017) 388
+ 388: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 387
+ Store 386(r013) 388
390: 24(fvec2) Load 29(inF0)
- 391: 24(fvec2) DPdxCoarse 390
- Store 389(r018) 391
- 393: 24(fvec2) Load 29(inF0)
- 394: 24(fvec2) DPdxFine 393
- Store 392(r019) 394
- 396: 24(fvec2) Load 29(inF0)
- 397: 24(fvec2) DPdy 396
- Store 395(r020) 397
- 399: 24(fvec2) Load 29(inF0)
- 400: 24(fvec2) DPdyCoarse 399
- Store 398(r021) 400
- 402: 24(fvec2) Load 29(inF0)
- 403: 24(fvec2) DPdyFine 402
- Store 401(r022) 403
- 405: 24(fvec2) Load 29(inF0)
- 406: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 405
- Store 404(r023) 406
- 408: 24(fvec2) Load 29(inF0)
- 409: 24(fvec2) Load 30(inF1)
- 410: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 408 409
- Store 407(r026) 410
+ 391: 24(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 390
+ Store 389(r015) 391
+ 395: 26(ivec2) BitCount 394
+ Store 392(r016) 395
+ 397: 24(fvec2) Load 29(inF0)
+ 398: 24(fvec2) DPdx 397
+ Store 396(r017) 398
+ 400: 24(fvec2) Load 29(inF0)
+ 401: 24(fvec2) DPdxCoarse 400
+ Store 399(r018) 401
+ 403: 24(fvec2) Load 29(inF0)
+ 404: 24(fvec2) DPdxFine 403
+ Store 402(r019) 404
+ 406: 24(fvec2) Load 29(inF0)
+ 407: 24(fvec2) DPdy 406
+ Store 405(r020) 407
+ 409: 24(fvec2) Load 29(inF0)
+ 410: 24(fvec2) DPdyCoarse 409
+ Store 408(r021) 410
412: 24(fvec2) Load 29(inF0)
- 413: 24(fvec2) Load 30(inF1)
- 414: 6(float) Dot 412 413
- Store 411(r027) 414
- 416: 24(fvec2) Load 29(inF0)
- 417: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 416
- Store 415(r028) 417
- 419: 24(fvec2) Load 29(inF0)
- 420: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 419
- Store 418(r029) 420
+ 413: 24(fvec2) DPdyFine 412
+ Store 411(r022) 413
+ 415: 24(fvec2) Load 29(inF0)
+ 416: 24(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 415
+ Store 414(r023) 416
+ 418: 24(fvec2) Load 29(inF0)
+ 419: 24(fvec2) Load 30(inF1)
+ 420: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 418 419
+ Store 417(r026) 420
422: 24(fvec2) Load 29(inF0)
423: 24(fvec2) Load 30(inF1)
- 424: 24(fvec2) Load 31(inF2)
- 425: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 422 423 424
- Store 421(r030) 425
- 429: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 428
- Store 426(r031) 429
- 431: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 428
- Store 430(r032) 431
- 433: 24(fvec2) Load 29(inF0)
- 434: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 433
- Store 432(r033) 434
- 436: 24(fvec2) Load 29(inF0)
- 437: 24(fvec2) Load 30(inF1)
- 438: 24(fvec2) FMod 436 437
- Store 435(r035) 438
- 440: 24(fvec2) Load 29(inF0)
- 441: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 440
- Store 439(r036) 441
+ 424: 6(float) Dot 422 423
+ Store 421(r027) 424
+ 426: 24(fvec2) Load 29(inF0)
+ 427: 24(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 426
+ Store 425(r028) 427
+ 429: 24(fvec2) Load 29(inF0)
+ 430: 24(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 429
+ Store 428(r029) 430
+ 432: 24(fvec2) Load 29(inF0)
+ 433: 24(fvec2) Load 30(inF1)
+ 434: 24(fvec2) Load 31(inF2)
+ 435: 24(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 432 433 434
+ Store 431(r030) 435
+ 439: 26(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 438
+ Store 436(r031) 439
+ 441: 26(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 438
+ Store 440(r032) 441
443: 24(fvec2) Load 29(inF0)
- 445:444(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 443
- 446: 342(ivec2) CompositeExtract 445 1
- Store 30(inF1) 446
- 447: 24(fvec2) CompositeExtract 445 0
- Store 442(r037) 447
- 449: 24(fvec2) Load 29(inF0)
- 450: 24(fvec2) Fwidth 449
- Store 448(r038) 450
+ 444: 24(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 443
+ Store 442(r033) 444
+ 446: 24(fvec2) Load 29(inF0)
+ 447: 24(fvec2) Load 30(inF1)
+ 448: 24(fvec2) FMod 446 447
+ Store 445(r035) 448
+ 450: 24(fvec2) Load 29(inF0)
+ 451: 24(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 450
+ Store 449(r036) 451
453: 24(fvec2) Load 29(inF0)
- 454: 370(bvec2) IsInf 453
- Store 452(r039) 454
- 456: 24(fvec2) Load 29(inF0)
- 457: 370(bvec2) IsNan 456
- Store 455(r040) 457
+ 455:454(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 453
+ 456: 352(ivec2) CompositeExtract 455 1
+ Store 30(inF1) 456
+ 457: 24(fvec2) CompositeExtract 455 0
+ Store 452(r037) 457
459: 24(fvec2) Load 29(inF0)
- 460: 24(fvec2) Load 30(inF1)
- 461: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 459 460
- Store 458(r041) 461
+ 460: 24(fvec2) Fwidth 459
+ Store 458(r038) 460
463: 24(fvec2) Load 29(inF0)
- 464: 24(fvec2) Load 30(inF1)
- 465: 24(fvec2) Load 31(inF2)
- 466: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 463 464 465
- Store 462(r039a) 466
- 468: 24(fvec2) Load 29(inF0)
- 469: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 468
- Store 467(r042) 469
- 471: 24(fvec2) Load 29(inF0)
- 472: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 471
- Store 470(r043) 472
- 474: 24(fvec2) Load 29(inF0)
- 475: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 474
- 476: 24(fvec2) VectorTimesScalar 475 253
- Store 473(r044) 476
+ 464: 380(bvec2) IsInf 463
+ Store 462(r039) 464
+ 466: 24(fvec2) Load 29(inF0)
+ 467: 380(bvec2) IsNan 466
+ Store 465(r040) 467
+ 469: 24(fvec2) Load 29(inF0)
+ 470: 24(fvec2) Load 30(inF1)
+ 471: 24(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 469 470
+ Store 468(r041) 471
+ 473: 24(fvec2) Load 29(inF0)
+ 474: 24(fvec2) Load 30(inF1)
+ 475: 24(fvec2) Load 31(inF2)
+ 476: 24(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 473 474 475
+ Store 472(r039a) 476
478: 24(fvec2) Load 29(inF0)
- 479: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 478
- Store 477(r045) 479
+ 479: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 478
+ Store 477(r042) 479
481: 24(fvec2) Load 29(inF0)
- 482: 24(fvec2) Load 30(inF1)
- 483: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 481 482
- Store 480(r046) 483
- 485: 24(fvec2) Load 29(inF0)
- 486: 24(fvec2) Load 30(inF1)
- 487: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 485 486
- Store 484(r047) 487
- 489: 24(fvec2) Load 29(inF0)
- 490: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 489
- Store 488(r048) 490
- 492: 24(fvec2) Load 29(inF0)
- 493: 24(fvec2) Load 30(inF1)
- 494: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 492 493
- Store 491(r049) 494
- 496: 24(fvec2) Load 29(inF0)
- 497: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 496
- Store 495(r050) 497
+ 482: 24(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 481
+ Store 480(r043) 482
+ 484: 24(fvec2) Load 29(inF0)
+ 485: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 484
+ 486: 24(fvec2) VectorTimesScalar 485 263
+ Store 483(r044) 486
+ 488: 24(fvec2) Load 29(inF0)
+ 489: 24(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 488
+ Store 487(r045) 489
+ 491: 24(fvec2) Load 29(inF0)
+ 492: 24(fvec2) Load 30(inF1)
+ 493: 24(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 491 492
+ Store 490(r046) 493
+ 495: 24(fvec2) Load 29(inF0)
+ 496: 24(fvec2) Load 30(inF1)
+ 497: 24(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 495 496
+ Store 494(r047) 497
499: 24(fvec2) Load 29(inF0)
- 500: 24(fvec2) CompositeConstruct 274 274
- 501: 24(fvec2) FDiv 500 499
- Store 498(r051) 501
- 503: 24(fvec2) Load 29(inF0)
- 504: 24(fvec2) Load 30(inF1)
- 505: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 503 504
- Store 502(r052) 505
- 507: 24(fvec2) Load 29(inF0)
- 508: 24(fvec2) Load 30(inF1)
- 510: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 507 508 509
- Store 506(r053) 510
- 514: 26(ivec2) BitReverse 513
- Store 511(r054) 514
- 516: 24(fvec2) Load 29(inF0)
- 517: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 516
- Store 515(r055) 517
- 519: 24(fvec2) Load 29(inF0)
- 520: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 519
- Store 518(r056) 520
- 522: 24(fvec2) Load 29(inF0)
- 523: 24(fvec2) CompositeConstruct 165 165
- 524: 24(fvec2) CompositeConstruct 274 274
- 525: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 522 523 524
- Store 521(r057) 525
- 527: 24(fvec2) Load 29(inF0)
- 528: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 527
- Store 526(r058) 528
- 530: 24(fvec2) Load 29(inF0)
- 531: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 530
- Store 529(r059) 531
+ 500: 24(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 499
+ Store 498(r048) 500
+ 502: 24(fvec2) Load 29(inF0)
+ 503: 24(fvec2) Load 30(inF1)
+ 504: 24(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 502 503
+ Store 501(r049) 504
+ 506: 24(fvec2) Load 29(inF0)
+ 507: 24(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 506
+ Store 505(r050) 507
+ 509: 24(fvec2) Load 29(inF0)
+ 510: 24(fvec2) CompositeConstruct 284 284
+ 511: 24(fvec2) FDiv 510 509
+ Store 508(r051) 511
+ 513: 24(fvec2) Load 29(inF0)
+ 514: 24(fvec2) Load 30(inF1)
+ 515: 24(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 513 514
+ Store 512(r052) 515
+ 517: 24(fvec2) Load 29(inF0)
+ 518: 24(fvec2) Load 30(inF1)
+ 520: 24(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 517 518 519
+ Store 516(r053) 520
+ 524: 26(ivec2) BitReverse 523
+ Store 521(r054) 524
+ 526: 24(fvec2) Load 29(inF0)
+ 527: 24(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 526
+ Store 525(r055) 527
+ 529: 24(fvec2) Load 29(inF0)
+ 530: 24(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 529
+ Store 528(r056) 530
532: 24(fvec2) Load 29(inF0)
- 533: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 532
- Store 30(inF1) 533
- 534: 24(fvec2) Load 29(inF0)
- 535: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 534
- Store 31(inF2) 535
+ 533: 24(fvec2) CompositeConstruct 175 175
+ 534: 24(fvec2) CompositeConstruct 284 284
+ 535: 24(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 532 533 534
+ Store 531(r057) 535
537: 24(fvec2) Load 29(inF0)
- 538: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 537
- Store 536(r060) 538
+ 538: 24(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 537
+ Store 536(r058) 538
540: 24(fvec2) Load 29(inF0)
- 541: 24(fvec2) Load 30(inF1)
- 542: 24(fvec2) Load 31(inF2)
- 543: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 540 541 542
- Store 539(r061) 543
- 545: 24(fvec2) Load 29(inF0)
- 546: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 545
- Store 544(r062) 546
- 548: 24(fvec2) Load 29(inF0)
- 549: 24(fvec2) Load 30(inF1)
- 550: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 548 549
- Store 547(r063) 550
- 552: 24(fvec2) Load 29(inF0)
- 553: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 552
- Store 551(r064) 553
+ 541: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 540
+ Store 539(r059) 541
+ 542: 24(fvec2) Load 29(inF0)
+ 543: 24(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 542
+ Store 30(inF1) 543
+ 544: 24(fvec2) Load 29(inF0)
+ 545: 24(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 544
+ Store 31(inF2) 545
+ 547: 24(fvec2) Load 29(inF0)
+ 548: 24(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 547
+ Store 546(r060) 548
+ 550: 24(fvec2) Load 29(inF0)
+ 551: 24(fvec2) Load 30(inF1)
+ 552: 24(fvec2) Load 31(inF2)
+ 553: 24(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 550 551 552
+ Store 549(r061) 553
555: 24(fvec2) Load 29(inF0)
- 556: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 555
- Store 554(r065) 556
+ 556: 24(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 555
+ Store 554(r062) 556
558: 24(fvec2) Load 29(inF0)
- 559: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 558
- Store 557(r066) 559
- ReturnValue 560
+ 559: 24(fvec2) Load 30(inF1)
+ 560: 24(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 558 559
+ Store 557(r063) 560
+ 562: 24(fvec2) Load 29(inF0)
+ 563: 24(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 562
+ Store 561(r064) 563
+ 565: 24(fvec2) Load 29(inF0)
+ 566: 24(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 565
+ Store 564(r065) 566
+ 568: 24(fvec2) Load 29(inF0)
+ 569: 24(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 568
+ Store 567(r066) 569
+ ReturnValue 570
FunctionEnd
46(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40
41(inF0): 37(ptr) FunctionParameter
@@ -7090,1278 +6848,1587 @@
44(inU0): 39(ptr) FunctionParameter
45(inU1): 39(ptr) FunctionParameter
47: Label
- 563(r000): 122(ptr) Variable Function
- 566(r001): 37(ptr) Variable Function
- 569(r002): 37(ptr) Variable Function
- 572(r003): 122(ptr) Variable Function
- 575(r004): 37(ptr) Variable Function
- 580(r005): 579(ptr) Variable Function
- 583(r006): 39(ptr) Variable Function
- 586(r007): 37(ptr) Variable Function
- 589(r009): 37(ptr) Variable Function
- 592(r010): 37(ptr) Variable Function
- 596(r011): 37(ptr) Variable Function
- 599(r012): 37(ptr) Variable Function
- 612(r013): 37(ptr) Variable Function
- 615(r014): 37(ptr) Variable Function
- 618(r015): 39(ptr) Variable Function
- 622(r016): 37(ptr) Variable Function
- 626(r017): 37(ptr) Variable Function
- 629(r018): 37(ptr) Variable Function
- 632(r019): 37(ptr) Variable Function
- 635(r020): 37(ptr) Variable Function
- 638(r021): 37(ptr) Variable Function
- 641(r022): 37(ptr) Variable Function
- 644(r023): 37(ptr) Variable Function
- 647(r024): 7(ptr) Variable Function
- 651(r025): 7(ptr) Variable Function
- 655(r029): 37(ptr) Variable Function
- 658(r030): 37(ptr) Variable Function
- 661(r031): 37(ptr) Variable Function
- 666(r032): 39(ptr) Variable Function
- 670(r033): 39(ptr) Variable Function
- 672(r034): 37(ptr) Variable Function
- 675(r036): 37(ptr) Variable Function
- 679(r037): 37(ptr) Variable Function
- 682(r038): 37(ptr) Variable Function
- 688(r039): 37(ptr) Variable Function
- 692(r040): 691(ptr) Variable Function
- 695(r041): 691(ptr) Variable Function
- 698(r042): 37(ptr) Variable Function
- 702(r039a): 37(ptr) Variable Function
- 707(r039b): 37(ptr) Variable Function
- 713(r043): 7(ptr) Variable Function
- 716(r044): 37(ptr) Variable Function
- 719(r045): 37(ptr) Variable Function
- 723(r046): 37(ptr) Variable Function
- 726(r047): 37(ptr) Variable Function
- 730(r048): 37(ptr) Variable Function
- 734(r049): 37(ptr) Variable Function
- 737(r050): 37(ptr) Variable Function
- 741(r051): 37(ptr) Variable Function
- 744(r052): 37(ptr) Variable Function
- 748(r053): 37(ptr) Variable Function
- 752(r054): 37(ptr) Variable Function
- 756(r055): 39(ptr) Variable Function
- 759(r056): 37(ptr) Variable Function
- 762(r057): 37(ptr) Variable Function
- 765(r058): 37(ptr) Variable Function
- 770(r059): 37(ptr) Variable Function
- 773(r060): 37(ptr) Variable Function
- 780(r061): 37(ptr) Variable Function
- 783(r062): 37(ptr) Variable Function
- 788(r063): 37(ptr) Variable Function
- 791(r064): 37(ptr) Variable Function
- 795(r065): 37(ptr) Variable Function
- 798(r066): 37(ptr) Variable Function
- 801(r067): 37(ptr) Variable Function
- 564: 36(fvec3) Load 41(inF0)
- 565: 121(bool) All 564
- Store 563(r000) 565
- 567: 36(fvec3) Load 41(inF0)
- 568: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 567
- Store 566(r001) 568
- 570: 36(fvec3) Load 41(inF0)
- 571: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 570
- Store 569(r002) 571
- 573: 36(fvec3) Load 41(inF0)
- 574: 121(bool) Any 573
- Store 572(r003) 574
- 576: 36(fvec3) Load 41(inF0)
- 577: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 576
- Store 575(r004) 577
- 581: 36(fvec3) Load 41(inF0)
- 582: 578(ivec3) Bitcast 581
- Store 580(r005) 582
- 584: 36(fvec3) Load 41(inF0)
- 585: 38(ivec3) Bitcast 584
- Store 583(r006) 585
- 587: 38(ivec3) Load 44(inU0)
- 588: 36(fvec3) Bitcast 587
- Store 586(r007) 588
- 590: 36(fvec3) Load 41(inF0)
- 591: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 590
- Store 589(r009) 591
- 593: 36(fvec3) Load 41(inF0)
- 594: 36(fvec3) Load 42(inF1)
- 595: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 593 594
- Store 592(r010) 595
- 597: 36(fvec3) Load 41(inF0)
- 598: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 597
- Store 596(r011) 598
+ 573(r000): 132(ptr) Variable Function
+ 576(r001): 37(ptr) Variable Function
+ 579(r002): 37(ptr) Variable Function
+ 582(r003): 132(ptr) Variable Function
+ 585(r004): 37(ptr) Variable Function
+ 590(r005): 589(ptr) Variable Function
+ 593(r006): 39(ptr) Variable Function
+ 596(r007): 37(ptr) Variable Function
+ 599(r009): 37(ptr) Variable Function
+ 602(r010): 37(ptr) Variable Function
+ 606(r011): 37(ptr) Variable Function
+ 609(r012): 37(ptr) Variable Function
+ 622(r013): 37(ptr) Variable Function
+ 625(r014): 37(ptr) Variable Function
+ 628(r015): 39(ptr) Variable Function
+ 632(r016): 37(ptr) Variable Function
+ 636(r017): 37(ptr) Variable Function
+ 639(r018): 37(ptr) Variable Function
+ 642(r019): 37(ptr) Variable Function
+ 645(r020): 37(ptr) Variable Function
+ 648(r021): 37(ptr) Variable Function
+ 651(r022): 37(ptr) Variable Function
+ 654(r023): 37(ptr) Variable Function
+ 657(r024): 7(ptr) Variable Function
+ 661(r025): 7(ptr) Variable Function
+ 665(r029): 37(ptr) Variable Function
+ 668(r030): 37(ptr) Variable Function
+ 671(r031): 37(ptr) Variable Function
+ 676(r032): 39(ptr) Variable Function
+ 680(r033): 39(ptr) Variable Function
+ 682(r034): 37(ptr) Variable Function
+ 685(r036): 37(ptr) Variable Function
+ 689(r037): 37(ptr) Variable Function
+ 692(r038): 37(ptr) Variable Function
+ 698(r039): 37(ptr) Variable Function
+ 702(r040): 701(ptr) Variable Function
+ 705(r041): 701(ptr) Variable Function
+ 708(r042): 37(ptr) Variable Function
+ 712(r039a): 37(ptr) Variable Function
+ 717(r039b): 37(ptr) Variable Function
+ 723(r043): 7(ptr) Variable Function
+ 726(r044): 37(ptr) Variable Function
+ 729(r045): 37(ptr) Variable Function
+ 733(r046): 37(ptr) Variable Function
+ 736(r047): 37(ptr) Variable Function
+ 740(r048): 37(ptr) Variable Function
+ 744(r049): 37(ptr) Variable Function
+ 747(r050): 37(ptr) Variable Function
+ 751(r051): 37(ptr) Variable Function
+ 754(r052): 37(ptr) Variable Function
+ 758(r053): 37(ptr) Variable Function
+ 762(r054): 37(ptr) Variable Function
+ 766(r055): 39(ptr) Variable Function
+ 769(r056): 37(ptr) Variable Function
+ 772(r057): 37(ptr) Variable Function
+ 775(r058): 37(ptr) Variable Function
+ 780(r059): 37(ptr) Variable Function
+ 783(r060): 37(ptr) Variable Function
+ 790(r061): 37(ptr) Variable Function
+ 793(r062): 37(ptr) Variable Function
+ 798(r063): 37(ptr) Variable Function
+ 801(r064): 37(ptr) Variable Function
+ 805(r065): 37(ptr) Variable Function
+ 808(r066): 37(ptr) Variable Function
+ 811(r067): 37(ptr) Variable Function
+ 574: 36(fvec3) Load 41(inF0)
+ 575: 131(bool) All 574
+ Store 573(r000) 575
+ 577: 36(fvec3) Load 41(inF0)
+ 578: 36(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 577
+ Store 576(r001) 578
+ 580: 36(fvec3) Load 41(inF0)
+ 581: 36(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 580
+ Store 579(r002) 581
+ 583: 36(fvec3) Load 41(inF0)
+ 584: 131(bool) Any 583
+ Store 582(r003) 584
+ 586: 36(fvec3) Load 41(inF0)
+ 587: 36(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 586
+ Store 585(r004) 587
+ 591: 36(fvec3) Load 41(inF0)
+ 592: 588(ivec3) Bitcast 591
+ Store 590(r005) 592
+ 594: 36(fvec3) Load 41(inF0)
+ 595: 38(ivec3) Bitcast 594
+ Store 593(r006) 595
+ 597: 38(ivec3) Load 44(inU0)
+ 598: 36(fvec3) Bitcast 597
+ Store 596(r007) 598
600: 36(fvec3) Load 41(inF0)
- 601: 36(fvec3) Load 42(inF1)
- 602: 36(fvec3) Load 43(inF2)
- 603: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 600 601 602
- Store 599(r012) 603
- 604: 36(fvec3) Load 41(inF0)
- 607: 606(bvec3) FOrdLessThan 604 605
- 608: 121(bool) Any 607
- SelectionMerge 610 None
- BranchConditional 608 609 610
- 609: Label
+ 601: 36(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 600
+ Store 599(r009) 601
+ 603: 36(fvec3) Load 41(inF0)
+ 604: 36(fvec3) Load 42(inF1)
+ 605: 36(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 603 604
+ Store 602(r010) 605
+ 607: 36(fvec3) Load 41(inF0)
+ 608: 36(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 607
+ Store 606(r011) 608
+ 610: 36(fvec3) Load 41(inF0)
+ 611: 36(fvec3) Load 42(inF1)
+ 612: 36(fvec3) Load 43(inF2)
+ 613: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 610 611 612
+ Store 609(r012) 613
+ 614: 36(fvec3) Load 41(inF0)
+ 617: 616(bvec3) FOrdLessThan 614 615
+ 618: 131(bool) Any 617
+ SelectionMerge 620 None
+ BranchConditional 618 619 620
+ 619: Label
Kill
- 610: Label
- 613: 36(fvec3) Load 41(inF0)
- 614: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 613
- Store 612(r013) 614
- 616: 36(fvec3) Load 41(inF0)
- 617: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 616
- Store 615(r014) 617
- 621: 38(ivec3) BitCount 620
- Store 618(r015) 621
+ 620: Label
623: 36(fvec3) Load 41(inF0)
- 624: 36(fvec3) Load 42(inF1)
- 625: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 623 624
- Store 622(r016) 625
- 627: 36(fvec3) Load 41(inF0)
- 628: 36(fvec3) DPdx 627
- Store 626(r017) 628
- 630: 36(fvec3) Load 41(inF0)
- 631: 36(fvec3) DPdxCoarse 630
- Store 629(r018) 631
+ 624: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 623
+ Store 622(r013) 624
+ 626: 36(fvec3) Load 41(inF0)
+ 627: 36(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 626
+ Store 625(r014) 627
+ 631: 38(ivec3) BitCount 630
+ Store 628(r015) 631
633: 36(fvec3) Load 41(inF0)
- 634: 36(fvec3) DPdxFine 633
- Store 632(r019) 634
- 636: 36(fvec3) Load 41(inF0)
- 637: 36(fvec3) DPdy 636
- Store 635(r020) 637
- 639: 36(fvec3) Load 41(inF0)
- 640: 36(fvec3) DPdyCoarse 639
- Store 638(r021) 640
- 642: 36(fvec3) Load 41(inF0)
- 643: 36(fvec3) DPdyFine 642
- Store 641(r022) 643
- 645: 36(fvec3) Load 41(inF0)
- 646: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 645
- Store 644(r023) 646
- 648: 36(fvec3) Load 41(inF0)
- 649: 36(fvec3) Load 42(inF1)
- 650: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 648 649
- Store 647(r024) 650
+ 634: 36(fvec3) Load 42(inF1)
+ 635: 36(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 633 634
+ Store 632(r016) 635
+ 637: 36(fvec3) Load 41(inF0)
+ 638: 36(fvec3) DPdx 637
+ Store 636(r017) 638
+ 640: 36(fvec3) Load 41(inF0)
+ 641: 36(fvec3) DPdxCoarse 640
+ Store 639(r018) 641
+ 643: 36(fvec3) Load 41(inF0)
+ 644: 36(fvec3) DPdxFine 643
+ Store 642(r019) 644
+ 646: 36(fvec3) Load 41(inF0)
+ 647: 36(fvec3) DPdy 646
+ Store 645(r020) 647
+ 649: 36(fvec3) Load 41(inF0)
+ 650: 36(fvec3) DPdyCoarse 649
+ Store 648(r021) 650
652: 36(fvec3) Load 41(inF0)
- 653: 36(fvec3) Load 42(inF1)
- 654: 6(float) Dot 652 653
- Store 651(r025) 654
- 656: 36(fvec3) Load 41(inF0)
- 657: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 656
- Store 655(r029) 657
- 659: 36(fvec3) Load 41(inF0)
- 660: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 659
- Store 658(r030) 660
+ 653: 36(fvec3) DPdyFine 652
+ Store 651(r022) 653
+ 655: 36(fvec3) Load 41(inF0)
+ 656: 36(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 655
+ Store 654(r023) 656
+ 658: 36(fvec3) Load 41(inF0)
+ 659: 36(fvec3) Load 42(inF1)
+ 660: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 658 659
+ Store 657(r024) 660
662: 36(fvec3) Load 41(inF0)
663: 36(fvec3) Load 42(inF1)
- 664: 36(fvec3) Load 43(inF2)
- 665: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 662 663 664
- Store 661(r031) 665
- 669: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 668
- Store 666(r032) 669
- 671: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 668
- Store 670(r033) 671
- 673: 36(fvec3) Load 41(inF0)
- 674: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 673
- Store 672(r034) 674
- 676: 36(fvec3) Load 41(inF0)
- 677: 36(fvec3) Load 42(inF1)
- 678: 36(fvec3) FMod 676 677
- Store 675(r036) 678
- 680: 36(fvec3) Load 41(inF0)
- 681: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 680
- Store 679(r037) 681
+ 664: 6(float) Dot 662 663
+ Store 661(r025) 664
+ 666: 36(fvec3) Load 41(inF0)
+ 667: 36(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 666
+ Store 665(r029) 667
+ 669: 36(fvec3) Load 41(inF0)
+ 670: 36(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 669
+ Store 668(r030) 670
+ 672: 36(fvec3) Load 41(inF0)
+ 673: 36(fvec3) Load 42(inF1)
+ 674: 36(fvec3) Load 43(inF2)
+ 675: 36(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 672 673 674
+ Store 671(r031) 675
+ 679: 38(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 678
+ Store 676(r032) 679
+ 681: 38(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 678
+ Store 680(r033) 681
683: 36(fvec3) Load 41(inF0)
- 685:684(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 683
- 686: 578(ivec3) CompositeExtract 685 1
- Store 42(inF1) 686
- 687: 36(fvec3) CompositeExtract 685 0
- Store 682(r038) 687
- 689: 36(fvec3) Load 41(inF0)
- 690: 36(fvec3) Fwidth 689
- Store 688(r039) 690
+ 684: 36(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 683
+ Store 682(r034) 684
+ 686: 36(fvec3) Load 41(inF0)
+ 687: 36(fvec3) Load 42(inF1)
+ 688: 36(fvec3) FMod 686 687
+ Store 685(r036) 688
+ 690: 36(fvec3) Load 41(inF0)
+ 691: 36(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 690
+ Store 689(r037) 691
693: 36(fvec3) Load 41(inF0)
- 694: 606(bvec3) IsInf 693
- Store 692(r040) 694
- 696: 36(fvec3) Load 41(inF0)
- 697: 606(bvec3) IsNan 696
- Store 695(r041) 697
+ 695:694(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 693
+ 696: 588(ivec3) CompositeExtract 695 1
+ Store 42(inF1) 696
+ 697: 36(fvec3) CompositeExtract 695 0
+ Store 692(r038) 697
699: 36(fvec3) Load 41(inF0)
- 700: 36(fvec3) Load 42(inF1)
- 701: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 699 700
- Store 698(r042) 701
+ 700: 36(fvec3) Fwidth 699
+ Store 698(r039) 700
703: 36(fvec3) Load 41(inF0)
- 704: 36(fvec3) Load 42(inF1)
- 705: 36(fvec3) Load 43(inF2)
- 706: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 703 704 705
- Store 702(r039a) 706
- 708: 36(fvec3) Load 41(inF0)
- 709: 36(fvec3) Load 42(inF1)
- 711: 36(fvec3) CompositeConstruct 710 710 710
- 712: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 708 709 711
- Store 707(r039b) 712
- 714: 36(fvec3) Load 41(inF0)
- 715: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 714
- Store 713(r043) 715
- 717: 36(fvec3) Load 41(inF0)
- 718: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 717
- Store 716(r044) 718
- 720: 36(fvec3) Load 41(inF0)
- 721: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 720
- 722: 36(fvec3) VectorTimesScalar 721 253
- Store 719(r045) 722
+ 704: 616(bvec3) IsInf 703
+ Store 702(r040) 704
+ 706: 36(fvec3) Load 41(inF0)
+ 707: 616(bvec3) IsNan 706
+ Store 705(r041) 707
+ 709: 36(fvec3) Load 41(inF0)
+ 710: 36(fvec3) Load 42(inF1)
+ 711: 36(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 709 710
+ Store 708(r042) 711
+ 713: 36(fvec3) Load 41(inF0)
+ 714: 36(fvec3) Load 42(inF1)
+ 715: 36(fvec3) Load 43(inF2)
+ 716: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 713 714 715
+ Store 712(r039a) 716
+ 718: 36(fvec3) Load 41(inF0)
+ 719: 36(fvec3) Load 42(inF1)
+ 721: 36(fvec3) CompositeConstruct 720 720 720
+ 722: 36(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 718 719 721
+ Store 717(r039b) 722
724: 36(fvec3) Load 41(inF0)
- 725: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 724
- Store 723(r046) 725
+ 725: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 724
+ Store 723(r043) 725
727: 36(fvec3) Load 41(inF0)
- 728: 36(fvec3) Load 42(inF1)
- 729: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 727 728
- Store 726(r047) 729
- 731: 36(fvec3) Load 41(inF0)
- 732: 36(fvec3) Load 42(inF1)
- 733: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 731 732
- Store 730(r048) 733
- 735: 36(fvec3) Load 41(inF0)
- 736: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 735
- Store 734(r049) 736
- 738: 36(fvec3) Load 41(inF0)
- 739: 36(fvec3) Load 42(inF1)
- 740: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 738 739
- Store 737(r050) 740
- 742: 36(fvec3) Load 41(inF0)
- 743: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 742
- Store 741(r051) 743
+ 728: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 727
+ Store 726(r044) 728
+ 730: 36(fvec3) Load 41(inF0)
+ 731: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 730
+ 732: 36(fvec3) VectorTimesScalar 731 263
+ Store 729(r045) 732
+ 734: 36(fvec3) Load 41(inF0)
+ 735: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 734
+ Store 733(r046) 735
+ 737: 36(fvec3) Load 41(inF0)
+ 738: 36(fvec3) Load 42(inF1)
+ 739: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 737 738
+ Store 736(r047) 739
+ 741: 36(fvec3) Load 41(inF0)
+ 742: 36(fvec3) Load 42(inF1)
+ 743: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 741 742
+ Store 740(r048) 743
745: 36(fvec3) Load 41(inF0)
- 746: 36(fvec3) CompositeConstruct 274 274 274
- 747: 36(fvec3) FDiv 746 745
- Store 744(r052) 747
- 749: 36(fvec3) Load 41(inF0)
- 750: 36(fvec3) Load 42(inF1)
- 751: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 749 750
- Store 748(r053) 751
- 753: 36(fvec3) Load 41(inF0)
- 754: 36(fvec3) Load 42(inF1)
- 755: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 753 754 509
- Store 752(r054) 755
- 758: 38(ivec3) BitReverse 757
- Store 756(r055) 758
- 760: 36(fvec3) Load 41(inF0)
- 761: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 760
- Store 759(r056) 761
+ 746: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 745
+ Store 744(r049) 746
+ 748: 36(fvec3) Load 41(inF0)
+ 749: 36(fvec3) Load 42(inF1)
+ 750: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 748 749
+ Store 747(r050) 750
+ 752: 36(fvec3) Load 41(inF0)
+ 753: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 752
+ Store 751(r051) 753
+ 755: 36(fvec3) Load 41(inF0)
+ 756: 36(fvec3) CompositeConstruct 284 284 284
+ 757: 36(fvec3) FDiv 756 755
+ Store 754(r052) 757
+ 759: 36(fvec3) Load 41(inF0)
+ 760: 36(fvec3) Load 42(inF1)
+ 761: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 759 760
+ Store 758(r053) 761
763: 36(fvec3) Load 41(inF0)
- 764: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 763
- Store 762(r057) 764
- 766: 36(fvec3) Load 41(inF0)
- 767: 36(fvec3) CompositeConstruct 165 165 165
- 768: 36(fvec3) CompositeConstruct 274 274 274
- 769: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 766 767 768
- Store 765(r058) 769
- 771: 36(fvec3) Load 41(inF0)
- 772: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 771
- Store 770(r059) 772
- 774: 36(fvec3) Load 41(inF0)
- 775: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 774
- Store 773(r060) 775
+ 764: 36(fvec3) Load 42(inF1)
+ 765: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 763 764 519
+ Store 762(r054) 765
+ 768: 38(ivec3) BitReverse 767
+ Store 766(r055) 768
+ 770: 36(fvec3) Load 41(inF0)
+ 771: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 770
+ Store 769(r056) 771
+ 773: 36(fvec3) Load 41(inF0)
+ 774: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 773
+ Store 772(r057) 774
776: 36(fvec3) Load 41(inF0)
- 777: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 776
- Store 42(inF1) 777
- 778: 36(fvec3) Load 41(inF0)
- 779: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 778
- Store 43(inF2) 779
+ 777: 36(fvec3) CompositeConstruct 175 175 175
+ 778: 36(fvec3) CompositeConstruct 284 284 284
+ 779: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 776 777 778
+ Store 775(r058) 779
781: 36(fvec3) Load 41(inF0)
- 782: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 781
- Store 780(r061) 782
+ 782: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 781
+ Store 780(r059) 782
784: 36(fvec3) Load 41(inF0)
- 785: 36(fvec3) Load 42(inF1)
- 786: 36(fvec3) Load 43(inF2)
- 787: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 784 785 786
- Store 783(r062) 787
- 789: 36(fvec3) Load 41(inF0)
- 790: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 789
- Store 788(r063) 790
- 792: 36(fvec3) Load 41(inF0)
- 793: 36(fvec3) Load 42(inF1)
- 794: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 792 793
- Store 791(r064) 794
- 796: 36(fvec3) Load 41(inF0)
- 797: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 796
- Store 795(r065) 797
+ 785: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 784
+ Store 783(r060) 785
+ 786: 36(fvec3) Load 41(inF0)
+ 787: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 786
+ Store 42(inF1) 787
+ 788: 36(fvec3) Load 41(inF0)
+ 789: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 788
+ Store 43(inF2) 789
+ 791: 36(fvec3) Load 41(inF0)
+ 792: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 791
+ Store 790(r061) 792
+ 794: 36(fvec3) Load 41(inF0)
+ 795: 36(fvec3) Load 42(inF1)
+ 796: 36(fvec3) Load 43(inF2)
+ 797: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 794 795 796
+ Store 793(r062) 797
799: 36(fvec3) Load 41(inF0)
- 800: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 799
- Store 798(r066) 800
+ 800: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 799
+ Store 798(r063) 800
802: 36(fvec3) Load 41(inF0)
- 803: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 802
- Store 801(r067) 803
- ReturnValue 805
+ 803: 36(fvec3) Load 42(inF1)
+ 804: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 802 803
+ Store 801(r064) 804
+ 806: 36(fvec3) Load 41(inF0)
+ 807: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 806
+ Store 805(r065) 807
+ 809: 36(fvec3) Load 41(inF0)
+ 810: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 809
+ Store 808(r066) 810
+ 812: 36(fvec3) Load 41(inF0)
+ 813: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 812
+ Store 811(r067) 813
+ ReturnValue 815
FunctionEnd
-54(PixelShaderFunction2x2(mf22;mf22;mf22;): 48 Function None 50
- 51(inF0): 49(ptr) FunctionParameter
- 52(inF1): 49(ptr) FunctionParameter
- 53(inF2): 49(ptr) FunctionParameter
- 55: Label
- 1062(r000): 122(ptr) Variable Function
- 1065(r001): 49(ptr) Variable Function
- 1070(r003): 122(ptr) Variable Function
- 1073(r004): 49(ptr) Variable Function
- 1076(r005): 49(ptr) Variable Function
- 1079(r006): 49(ptr) Variable Function
- 1083(r007): 49(ptr) Variable Function
- 1094(r008): 49(ptr) Variable Function
- 1099(r009): 49(ptr) Variable Function
- 1102(r010): 49(ptr) Variable Function
- 1105(r011): 49(ptr) Variable Function
- 1108(r012): 49(ptr) Variable Function
- 1111(r013): 49(ptr) Variable Function
- 1114(r014): 49(ptr) Variable Function
- 1117(r015): 49(ptr) Variable Function
- 1120(r016): 49(ptr) Variable Function
- 1123(r017): 49(ptr) Variable Function
- 1126(r018): 7(ptr) Variable Function
- 1129(r019): 49(ptr) Variable Function
- 1132(R020): 49(ptr) Variable Function
- 1135(r021): 49(ptr) Variable Function
- 1138(r022): 49(ptr) Variable Function
- 1148(r023): 49(ptr) Variable Function
- 1151(r024): 49(ptr) Variable Function
- 1157(r025): 49(ptr) Variable Function
- 1160(r026): 49(ptr) Variable Function
- 1164(r026a): 49(ptr) Variable Function
- 1169(r027): 49(ptr) Variable Function
- 1172(r028): 49(ptr) Variable Function
- 1176(r029): 49(ptr) Variable Function
- 1179(r030): 49(ptr) Variable Function
- 1183(r031): 49(ptr) Variable Function
- 1187(r032): 49(ptr) Variable Function
- 1191(r033): 49(ptr) Variable Function
- 1194(r034): 49(ptr) Variable Function
- 1197(r035): 49(ptr) Variable Function
- 1200(r036): 49(ptr) Variable Function
- 1205(r037): 49(ptr) Variable Function
- 1208(r038): 49(ptr) Variable Function
- 1215(r039): 49(ptr) Variable Function
- 1218(r049): 49(ptr) Variable Function
- 1223(r041): 49(ptr) Variable Function
- 1226(r042): 49(ptr) Variable Function
- 1230(r043): 49(ptr) Variable Function
- 1233(r044): 49(ptr) Variable Function
- 1238(r046): 49(ptr) Variable Function
- 1063: 48 Load 51(inF0)
- 1064: 121(bool) All 1063
- Store 1062(r000) 1064
- 1066: 48 Load 51(inF0)
- 1067: 48 ExtInst 1(GLSL.std.450) 4(FAbs) 1066
- Store 1065(r001) 1067
- 1068: 48 Load 51(inF0)
- 1069: 48 ExtInst 1(GLSL.std.450) 17(Acos) 1068
- 1071: 48 Load 51(inF0)
- 1072: 121(bool) Any 1071
- Store 1070(r003) 1072
- 1074: 48 Load 51(inF0)
- 1075: 48 ExtInst 1(GLSL.std.450) 16(Asin) 1074
- Store 1073(r004) 1075
- 1077: 48 Load 51(inF0)
- 1078: 48 ExtInst 1(GLSL.std.450) 18(Atan) 1077
- Store 1076(r005) 1078
- 1080: 48 Load 51(inF0)
- 1081: 48 Load 52(inF1)
- 1082: 48 ExtInst 1(GLSL.std.450) 25(Atan2) 1080 1081
- Store 1079(r006) 1082
- 1084: 48 Load 51(inF0)
- 1085: 48 ExtInst 1(GLSL.std.450) 9(Ceil) 1084
- Store 1083(r007) 1085
- 1086: 48 Load 51(inF0)
- 1089: 1088 FOrdLessThan 1086 1087
- 1090: 121(bool) Any 1089
- SelectionMerge 1092 None
- BranchConditional 1090 1091 1092
- 1091: Label
+58(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52
+ 53(inF0): 49(ptr) FunctionParameter
+ 54(inF1): 49(ptr) FunctionParameter
+ 55(inF2): 49(ptr) FunctionParameter
+ 56(inU0): 51(ptr) FunctionParameter
+ 57(inU1): 51(ptr) FunctionParameter
+ 59: Label
+ 818(r000): 132(ptr) Variable Function
+ 821(r001): 49(ptr) Variable Function
+ 824(r002): 49(ptr) Variable Function
+ 827(r003): 132(ptr) Variable Function
+ 830(r004): 49(ptr) Variable Function
+ 835(r005): 834(ptr) Variable Function
+ 838(r006): 51(ptr) Variable Function
+ 841(r007): 49(ptr) Variable Function
+ 844(r009): 49(ptr) Variable Function
+ 847(r010): 49(ptr) Variable Function
+ 851(r011): 49(ptr) Variable Function
+ 854(r012): 49(ptr) Variable Function
+ 867(r013): 49(ptr) Variable Function
+ 870(r014): 49(ptr) Variable Function
+ 873(r015): 51(ptr) Variable Function
+ 876(r016): 49(ptr) Variable Function
+ 879(r017): 49(ptr) Variable Function
+ 882(r018): 49(ptr) Variable Function
+ 885(r019): 49(ptr) Variable Function
+ 888(r020): 49(ptr) Variable Function
+ 891(r021): 49(ptr) Variable Function
+ 894(r022): 49(ptr) Variable Function
+ 897(r023): 7(ptr) Variable Function
+ 901(r024): 7(ptr) Variable Function
+ 905(r025): 49(ptr) Variable Function
+ 916(r029): 49(ptr) Variable Function
+ 919(r030): 49(ptr) Variable Function
+ 922(r031): 49(ptr) Variable Function
+ 927(r032): 51(ptr) Variable Function
+ 932(r033): 51(ptr) Variable Function
+ 934(r034): 49(ptr) Variable Function
+ 937(r036): 49(ptr) Variable Function
+ 941(r037): 49(ptr) Variable Function
+ 944(r038): 49(ptr) Variable Function
+ 950(r039): 49(ptr) Variable Function
+ 954(r040): 953(ptr) Variable Function
+ 957(r041): 953(ptr) Variable Function
+ 960(r042): 49(ptr) Variable Function
+ 964(r039a): 49(ptr) Variable Function
+ 969(r043): 7(ptr) Variable Function
+ 972(r044): 49(ptr) Variable Function
+ 975(r045): 49(ptr) Variable Function
+ 979(r046): 49(ptr) Variable Function
+ 982(r047): 49(ptr) Variable Function
+ 986(r048): 49(ptr) Variable Function
+ 990(r049): 49(ptr) Variable Function
+ 993(r050): 49(ptr) Variable Function
+ 997(r051): 49(ptr) Variable Function
+ 1000(r052): 49(ptr) Variable Function
+ 1004(r053): 49(ptr) Variable Function
+ 1008(r054): 49(ptr) Variable Function
+ 1012(r055): 51(ptr) Variable Function
+ 1015(r056): 49(ptr) Variable Function
+ 1018(r057): 49(ptr) Variable Function
+ 1021(r058): 49(ptr) Variable Function
+ 1026(r059): 49(ptr) Variable Function
+ 1029(r060): 49(ptr) Variable Function
+ 1036(r061): 49(ptr) Variable Function
+ 1039(r062): 49(ptr) Variable Function
+ 1044(r063): 49(ptr) Variable Function
+ 1047(r064): 49(ptr) Variable Function
+ 1051(r065): 49(ptr) Variable Function
+ 1054(r066): 49(ptr) Variable Function
+ 1057(r067): 49(ptr) Variable Function
+ 819: 48(fvec4) Load 53(inF0)
+ 820: 131(bool) All 819
+ Store 818(r000) 820
+ 822: 48(fvec4) Load 53(inF0)
+ 823: 48(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 822
+ Store 821(r001) 823
+ 825: 48(fvec4) Load 53(inF0)
+ 826: 48(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 825
+ Store 824(r002) 826
+ 828: 48(fvec4) Load 53(inF0)
+ 829: 131(bool) Any 828
+ Store 827(r003) 829
+ 831: 48(fvec4) Load 53(inF0)
+ 832: 48(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 831
+ Store 830(r004) 832
+ 836: 48(fvec4) Load 53(inF0)
+ 837: 833(ivec4) Bitcast 836
+ Store 835(r005) 837
+ 839: 48(fvec4) Load 53(inF0)
+ 840: 50(ivec4) Bitcast 839
+ Store 838(r006) 840
+ 842: 50(ivec4) Load 56(inU0)
+ 843: 48(fvec4) Bitcast 842
+ Store 841(r007) 843
+ 845: 48(fvec4) Load 53(inF0)
+ 846: 48(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 845
+ Store 844(r009) 846
+ 848: 48(fvec4) Load 53(inF0)
+ 849: 48(fvec4) Load 54(inF1)
+ 850: 48(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 848 849
+ Store 847(r010) 850
+ 852: 48(fvec4) Load 53(inF0)
+ 853: 48(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 852
+ Store 851(r011) 853
+ 855: 48(fvec4) Load 53(inF0)
+ 856: 48(fvec4) Load 54(inF1)
+ 857: 48(fvec4) Load 55(inF2)
+ 858: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 855 856 857
+ Store 854(r012) 858
+ 859: 48(fvec4) Load 53(inF0)
+ 862: 861(bvec4) FOrdLessThan 859 860
+ 863: 131(bool) Any 862
+ SelectionMerge 865 None
+ BranchConditional 863 864 865
+ 864: Label
Kill
- 1092: Label
- 1095: 48 Load 51(inF0)
- 1096: 48 Load 52(inF1)
- 1097: 48 Load 53(inF2)
- 1098: 48 ExtInst 1(GLSL.std.450) 43(FClamp) 1095 1096 1097
- Store 1094(r008) 1098
- 1100: 48 Load 51(inF0)
- 1101: 48 ExtInst 1(GLSL.std.450) 14(Cos) 1100
- Store 1099(r009) 1101
- 1103: 48 Load 51(inF0)
- 1104: 48 ExtInst 1(GLSL.std.450) 20(Cosh) 1103
- Store 1102(r010) 1104
- 1106: 48 Load 51(inF0)
- 1107: 48 DPdx 1106
- Store 1105(r011) 1107
- 1109: 48 Load 51(inF0)
- 1110: 48 DPdxCoarse 1109
- Store 1108(r012) 1110
- 1112: 48 Load 51(inF0)
- 1113: 48 DPdxFine 1112
- Store 1111(r013) 1113
- 1115: 48 Load 51(inF0)
- 1116: 48 DPdy 1115
- Store 1114(r014) 1116
- 1118: 48 Load 51(inF0)
- 1119: 48 DPdyCoarse 1118
- Store 1117(r015) 1119
- 1121: 48 Load 51(inF0)
- 1122: 48 DPdyFine 1121
- Store 1120(r016) 1122
- 1124: 48 Load 51(inF0)
- 1125: 48 ExtInst 1(GLSL.std.450) 12(Degrees) 1124
- Store 1123(r017) 1125
- 1127: 48 Load 51(inF0)
- 1128: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1127
- Store 1126(r018) 1128
- 1130: 48 Load 51(inF0)
- 1131: 48 ExtInst 1(GLSL.std.450) 27(Exp) 1130
- Store 1129(r019) 1131
- 1133: 48 Load 51(inF0)
- 1134: 48 ExtInst 1(GLSL.std.450) 29(Exp2) 1133
- Store 1132(R020) 1134
- 1136: 48 Load 51(inF0)
- 1137: 48 ExtInst 1(GLSL.std.450) 8(Floor) 1136
- Store 1135(r021) 1137
- 1139: 48 Load 51(inF0)
- 1140: 48 Load 52(inF1)
- 1141: 24(fvec2) CompositeExtract 1139 0
- 1142: 24(fvec2) CompositeExtract 1140 0
- 1143: 24(fvec2) FMod 1141 1142
- 1144: 24(fvec2) CompositeExtract 1139 1
- 1145: 24(fvec2) CompositeExtract 1140 1
- 1146: 24(fvec2) FMod 1144 1145
- 1147: 48 CompositeConstruct 1143 1146
- Store 1138(r022) 1147
- 1149: 48 Load 51(inF0)
- 1150: 48 ExtInst 1(GLSL.std.450) 10(Fract) 1149
- Store 1148(r023) 1150
- 1152: 48 Load 51(inF0)
- 1154:1153(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1152
- 1155: 342(ivec2) CompositeExtract 1154 1
- Store 52(inF1) 1155
- 1156: 48 CompositeExtract 1154 0
- Store 1151(r024) 1156
- 1158: 48 Load 51(inF0)
- 1159: 48 Fwidth 1158
- Store 1157(r025) 1159
- 1161: 48 Load 51(inF0)
- 1162: 48 Load 52(inF1)
- 1163: 48 ExtInst 1(GLSL.std.450) 53(Ldexp) 1161 1162
- Store 1160(r026) 1163
- 1165: 48 Load 51(inF0)
- 1166: 48 Load 52(inF1)
- 1167: 48 Load 53(inF2)
- 1168: 48 ExtInst 1(GLSL.std.450) 46(FMix) 1165 1166 1167
- Store 1164(r026a) 1168
- 1170: 48 Load 51(inF0)
- 1171: 48 ExtInst 1(GLSL.std.450) 28(Log) 1170
- Store 1169(r027) 1171
- 1173: 48 Load 51(inF0)
- 1174: 48 ExtInst 1(GLSL.std.450) 30(Log2) 1173
- 1175: 48 MatrixTimesScalar 1174 253
- Store 1172(r028) 1175
- 1177: 48 Load 51(inF0)
- 1178: 48 ExtInst 1(GLSL.std.450) 30(Log2) 1177
- Store 1176(r029) 1178
- 1180: 48 Load 51(inF0)
- 1181: 48 Load 52(inF1)
- 1182: 48 ExtInst 1(GLSL.std.450) 40(FMax) 1180 1181
- Store 1179(r030) 1182
- 1184: 48 Load 51(inF0)
- 1185: 48 Load 52(inF1)
- 1186: 48 ExtInst 1(GLSL.std.450) 37(FMin) 1184 1185
- Store 1183(r031) 1186
- 1188: 48 Load 51(inF0)
- 1189: 48 Load 52(inF1)
- 1190: 48 ExtInst 1(GLSL.std.450) 26(Pow) 1188 1189
- Store 1187(r032) 1190
- 1192: 48 Load 51(inF0)
- 1193: 48 ExtInst 1(GLSL.std.450) 11(Radians) 1192
- Store 1191(r033) 1193
- 1195: 48 Load 51(inF0)
- 1196: 48 ExtInst 1(GLSL.std.450) 2(RoundEven) 1195
- Store 1194(r034) 1196
- 1198: 48 Load 51(inF0)
- 1199: 48 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1198
- Store 1197(r035) 1199
- 1201: 48 Load 51(inF0)
- 1202: 24(fvec2) CompositeConstruct 165 165
- 1203: 24(fvec2) CompositeConstruct 274 274
- 1204: 48 ExtInst 1(GLSL.std.450) 43(FClamp) 1201 1202 1203
- Store 1200(r036) 1204
- 1206: 48 Load 51(inF0)
- 1207: 48 ExtInst 1(GLSL.std.450) 6(FSign) 1206
- Store 1205(r037) 1207
- 1209: 48 Load 51(inF0)
- 1210: 48 ExtInst 1(GLSL.std.450) 13(Sin) 1209
- Store 1208(r038) 1210
- 1211: 48 Load 51(inF0)
- 1212: 48 ExtInst 1(GLSL.std.450) 13(Sin) 1211
- Store 52(inF1) 1212
- 1213: 48 Load 51(inF0)
- 1214: 48 ExtInst 1(GLSL.std.450) 14(Cos) 1213
- Store 53(inF2) 1214
- 1216: 48 Load 51(inF0)
- 1217: 48 ExtInst 1(GLSL.std.450) 19(Sinh) 1216
- Store 1215(r039) 1217
- 1219: 48 Load 51(inF0)
- 1220: 48 Load 52(inF1)
- 1221: 48 Load 53(inF2)
- 1222: 48 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1219 1220 1221
- Store 1218(r049) 1222
- 1224: 48 Load 51(inF0)
- 1225: 48 ExtInst 1(GLSL.std.450) 31(Sqrt) 1224
- Store 1223(r041) 1225
- 1227: 48 Load 51(inF0)
- 1228: 48 Load 52(inF1)
- 1229: 48 ExtInst 1(GLSL.std.450) 48(Step) 1227 1228
- Store 1226(r042) 1229
- 1231: 48 Load 51(inF0)
- 1232: 48 ExtInst 1(GLSL.std.450) 15(Tan) 1231
- Store 1230(r043) 1232
- 1234: 48 Load 51(inF0)
- 1235: 48 ExtInst 1(GLSL.std.450) 21(Tanh) 1234
- Store 1233(r044) 1235
- 1236: 48 Load 51(inF0)
- 1237: 48 Transpose 1236
- 1239: 48 Load 51(inF0)
- 1240: 48 ExtInst 1(GLSL.std.450) 3(Trunc) 1239
- Store 1238(r046) 1240
- ReturnValue 1242
+ 865: Label
+ 868: 48(fvec4) Load 53(inF0)
+ 869: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 868
+ Store 867(r013) 869
+ 871: 48(fvec4) Load 53(inF0)
+ 872: 48(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 871
+ Store 870(r014) 872
+ 875: 50(ivec4) BitCount 874
+ Store 873(r015) 875
+ 877: 48(fvec4) Load 53(inF0)
+ 878: 48(fvec4) DPdx 877
+ Store 876(r016) 878
+ 880: 48(fvec4) Load 53(inF0)
+ 881: 48(fvec4) DPdxCoarse 880
+ Store 879(r017) 881
+ 883: 48(fvec4) Load 53(inF0)
+ 884: 48(fvec4) DPdxFine 883
+ Store 882(r018) 884
+ 886: 48(fvec4) Load 53(inF0)
+ 887: 48(fvec4) DPdy 886
+ Store 885(r019) 887
+ 889: 48(fvec4) Load 53(inF0)
+ 890: 48(fvec4) DPdyCoarse 889
+ Store 888(r020) 890
+ 892: 48(fvec4) Load 53(inF0)
+ 893: 48(fvec4) DPdyFine 892
+ Store 891(r021) 893
+ 895: 48(fvec4) Load 53(inF0)
+ 896: 48(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 895
+ Store 894(r022) 896
+ 898: 48(fvec4) Load 53(inF0)
+ 899: 48(fvec4) Load 54(inF1)
+ 900: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 898 899
+ Store 897(r023) 900
+ 902: 48(fvec4) Load 53(inF0)
+ 903: 48(fvec4) Load 54(inF1)
+ 904: 6(float) Dot 902 903
+ Store 901(r024) 904
+ 906: 7(ptr) AccessChain 53(inF0) 522
+ 907: 6(float) Load 906
+ 908: 7(ptr) AccessChain 54(inF1) 522
+ 909: 6(float) Load 908
+ 910: 6(float) FMul 907 909
+ 911: 7(ptr) AccessChain 53(inF0) 288
+ 912: 6(float) Load 911
+ 913: 7(ptr) AccessChain 54(inF1) 393
+ 914: 6(float) Load 913
+ 915: 48(fvec4) CompositeConstruct 284 910 912 914
+ Store 905(r025) 915
+ 917: 48(fvec4) Load 53(inF0)
+ 918: 48(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 917
+ Store 916(r029) 918
+ 920: 48(fvec4) Load 53(inF0)
+ 921: 48(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 920
+ Store 919(r030) 921
+ 923: 48(fvec4) Load 53(inF0)
+ 924: 48(fvec4) Load 54(inF1)
+ 925: 48(fvec4) Load 55(inF2)
+ 926: 48(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 923 924 925
+ Store 922(r031) 926
+ 931: 50(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 930
+ Store 927(r032) 931
+ 933: 50(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 930
+ Store 932(r033) 933
+ 935: 48(fvec4) Load 53(inF0)
+ 936: 48(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 935
+ Store 934(r034) 936
+ 938: 48(fvec4) Load 53(inF0)
+ 939: 48(fvec4) Load 54(inF1)
+ 940: 48(fvec4) FMod 938 939
+ Store 937(r036) 940
+ 942: 48(fvec4) Load 53(inF0)
+ 943: 48(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 942
+ Store 941(r037) 943
+ 945: 48(fvec4) Load 53(inF0)
+ 947:946(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 945
+ 948: 833(ivec4) CompositeExtract 947 1
+ Store 54(inF1) 948
+ 949: 48(fvec4) CompositeExtract 947 0
+ Store 944(r038) 949
+ 951: 48(fvec4) Load 53(inF0)
+ 952: 48(fvec4) Fwidth 951
+ Store 950(r039) 952
+ 955: 48(fvec4) Load 53(inF0)
+ 956: 861(bvec4) IsInf 955
+ Store 954(r040) 956
+ 958: 48(fvec4) Load 53(inF0)
+ 959: 861(bvec4) IsNan 958
+ Store 957(r041) 959
+ 961: 48(fvec4) Load 53(inF0)
+ 962: 48(fvec4) Load 54(inF1)
+ 963: 48(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 961 962
+ Store 960(r042) 963
+ 965: 48(fvec4) Load 53(inF0)
+ 966: 48(fvec4) Load 54(inF1)
+ 967: 48(fvec4) Load 55(inF2)
+ 968: 48(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 965 966 967
+ Store 964(r039a) 968
+ 970: 48(fvec4) Load 53(inF0)
+ 971: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 970
+ Store 969(r043) 971
+ 973: 48(fvec4) Load 53(inF0)
+ 974: 48(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 973
+ Store 972(r044) 974
+ 976: 48(fvec4) Load 53(inF0)
+ 977: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 976
+ 978: 48(fvec4) VectorTimesScalar 977 263
+ Store 975(r045) 978
+ 980: 48(fvec4) Load 53(inF0)
+ 981: 48(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 980
+ Store 979(r046) 981
+ 983: 48(fvec4) Load 53(inF0)
+ 984: 48(fvec4) Load 54(inF1)
+ 985: 48(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 983 984
+ Store 982(r047) 985
+ 987: 48(fvec4) Load 53(inF0)
+ 988: 48(fvec4) Load 54(inF1)
+ 989: 48(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 987 988
+ Store 986(r048) 989
+ 991: 48(fvec4) Load 53(inF0)
+ 992: 48(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 991
+ Store 990(r049) 992
+ 994: 48(fvec4) Load 53(inF0)
+ 995: 48(fvec4) Load 54(inF1)
+ 996: 48(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 994 995
+ Store 993(r050) 996
+ 998: 48(fvec4) Load 53(inF0)
+ 999: 48(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 998
+ Store 997(r051) 999
+ 1001: 48(fvec4) Load 53(inF0)
+ 1002: 48(fvec4) CompositeConstruct 284 284 284 284
+ 1003: 48(fvec4) FDiv 1002 1001
+ Store 1000(r052) 1003
+ 1005: 48(fvec4) Load 53(inF0)
+ 1006: 48(fvec4) Load 54(inF1)
+ 1007: 48(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1005 1006
+ Store 1004(r053) 1007
+ 1009: 48(fvec4) Load 53(inF0)
+ 1010: 48(fvec4) Load 54(inF1)
+ 1011: 48(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1009 1010 519
+ Store 1008(r054) 1011
+ 1014: 50(ivec4) BitReverse 1013
+ Store 1012(r055) 1014
+ 1016: 48(fvec4) Load 53(inF0)
+ 1017: 48(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1016
+ Store 1015(r056) 1017
+ 1019: 48(fvec4) Load 53(inF0)
+ 1020: 48(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1019
+ Store 1018(r057) 1020
+ 1022: 48(fvec4) Load 53(inF0)
+ 1023: 48(fvec4) CompositeConstruct 175 175 175 175
+ 1024: 48(fvec4) CompositeConstruct 284 284 284 284
+ 1025: 48(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1022 1023 1024
+ Store 1021(r058) 1025
+ 1027: 48(fvec4) Load 53(inF0)
+ 1028: 48(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1027
+ Store 1026(r059) 1028
+ 1030: 48(fvec4) Load 53(inF0)
+ 1031: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1030
+ Store 1029(r060) 1031
+ 1032: 48(fvec4) Load 53(inF0)
+ 1033: 48(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1032
+ Store 54(inF1) 1033
+ 1034: 48(fvec4) Load 53(inF0)
+ 1035: 48(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1034
+ Store 55(inF2) 1035
+ 1037: 48(fvec4) Load 53(inF0)
+ 1038: 48(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1037
+ Store 1036(r061) 1038
+ 1040: 48(fvec4) Load 53(inF0)
+ 1041: 48(fvec4) Load 54(inF1)
+ 1042: 48(fvec4) Load 55(inF2)
+ 1043: 48(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1040 1041 1042
+ Store 1039(r062) 1043
+ 1045: 48(fvec4) Load 53(inF0)
+ 1046: 48(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1045
+ Store 1044(r063) 1046
+ 1048: 48(fvec4) Load 53(inF0)
+ 1049: 48(fvec4) Load 54(inF1)
+ 1050: 48(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1048 1049
+ Store 1047(r064) 1050
+ 1052: 48(fvec4) Load 53(inF0)
+ 1053: 48(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1052
+ Store 1051(r065) 1053
+ 1055: 48(fvec4) Load 53(inF0)
+ 1056: 48(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1055
+ Store 1054(r066) 1056
+ 1058: 48(fvec4) Load 53(inF0)
+ 1059: 48(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1058
+ Store 1057(r067) 1059
+ ReturnValue 1061
FunctionEnd
-62(PixelShaderFunction3x3(mf33;mf33;mf33;): 56 Function None 58
- 59(inF0): 57(ptr) FunctionParameter
- 60(inF1): 57(ptr) FunctionParameter
- 61(inF2): 57(ptr) FunctionParameter
- 63: Label
- 1245(r000): 122(ptr) Variable Function
- 1248(r001): 57(ptr) Variable Function
- 1253(r003): 122(ptr) Variable Function
- 1256(r004): 57(ptr) Variable Function
- 1259(r005): 57(ptr) Variable Function
- 1262(r006): 57(ptr) Variable Function
- 1266(r007): 57(ptr) Variable Function
- 1277(r008): 57(ptr) Variable Function
- 1282(r009): 57(ptr) Variable Function
- 1285(r010): 57(ptr) Variable Function
- 1288(r011): 57(ptr) Variable Function
- 1291(r012): 57(ptr) Variable Function
- 1294(r013): 57(ptr) Variable Function
- 1297(r014): 57(ptr) Variable Function
- 1300(r015): 57(ptr) Variable Function
- 1303(r016): 57(ptr) Variable Function
- 1306(r017): 57(ptr) Variable Function
- 1309(r018): 7(ptr) Variable Function
- 1312(r019): 57(ptr) Variable Function
- 1315(R020): 57(ptr) Variable Function
- 1318(r021): 57(ptr) Variable Function
- 1321(r022): 57(ptr) Variable Function
- 1334(r023): 57(ptr) Variable Function
- 1337(r024): 57(ptr) Variable Function
- 1343(r025): 57(ptr) Variable Function
- 1346(r026): 57(ptr) Variable Function
- 1350(r026a): 57(ptr) Variable Function
- 1355(r027): 57(ptr) Variable Function
- 1358(r028): 57(ptr) Variable Function
- 1362(r029): 57(ptr) Variable Function
- 1365(r030): 57(ptr) Variable Function
- 1369(r031): 57(ptr) Variable Function
- 1373(r032): 57(ptr) Variable Function
- 1377(r033): 57(ptr) Variable Function
- 1380(r034): 57(ptr) Variable Function
- 1383(r035): 57(ptr) Variable Function
- 1386(r036): 57(ptr) Variable Function
- 1391(r037): 57(ptr) Variable Function
- 1394(r038): 57(ptr) Variable Function
- 1401(r039): 57(ptr) Variable Function
- 1404(r049): 57(ptr) Variable Function
- 1409(r041): 57(ptr) Variable Function
- 1412(r042): 57(ptr) Variable Function
- 1416(r043): 57(ptr) Variable Function
- 1419(r044): 57(ptr) Variable Function
- 1424(r046): 57(ptr) Variable Function
- 1246: 56 Load 59(inF0)
- 1247: 121(bool) All 1246
- Store 1245(r000) 1247
- 1249: 56 Load 59(inF0)
- 1250: 56 ExtInst 1(GLSL.std.450) 4(FAbs) 1249
- Store 1248(r001) 1250
- 1251: 56 Load 59(inF0)
- 1252: 56 ExtInst 1(GLSL.std.450) 17(Acos) 1251
- 1254: 56 Load 59(inF0)
- 1255: 121(bool) Any 1254
- Store 1253(r003) 1255
- 1257: 56 Load 59(inF0)
- 1258: 56 ExtInst 1(GLSL.std.450) 16(Asin) 1257
- Store 1256(r004) 1258
- 1260: 56 Load 59(inF0)
- 1261: 56 ExtInst 1(GLSL.std.450) 18(Atan) 1260
- Store 1259(r005) 1261
- 1263: 56 Load 59(inF0)
- 1264: 56 Load 60(inF1)
- 1265: 56 ExtInst 1(GLSL.std.450) 25(Atan2) 1263 1264
- Store 1262(r006) 1265
- 1267: 56 Load 59(inF0)
- 1268: 56 ExtInst 1(GLSL.std.450) 9(Ceil) 1267
- Store 1266(r007) 1268
- 1269: 56 Load 59(inF0)
- 1272: 1271 FOrdLessThan 1269 1270
- 1273: 121(bool) Any 1272
- SelectionMerge 1275 None
- BranchConditional 1273 1274 1275
- 1274: Label
+66(PixelShaderFunction2x2(mf22;mf22;mf22;): 60 Function None 62
+ 63(inF0): 61(ptr) FunctionParameter
+ 64(inF1): 61(ptr) FunctionParameter
+ 65(inF2): 61(ptr) FunctionParameter
+ 67: Label
+ 1064(r000): 132(ptr) Variable Function
+ 1067(r001): 61(ptr) Variable Function
+ 1072(r003): 132(ptr) Variable Function
+ 1075(r004): 61(ptr) Variable Function
+ 1078(r005): 61(ptr) Variable Function
+ 1081(r006): 61(ptr) Variable Function
+ 1085(r007): 61(ptr) Variable Function
+ 1096(r008): 61(ptr) Variable Function
+ 1101(r009): 61(ptr) Variable Function
+ 1104(r010): 61(ptr) Variable Function
+ 1107(r011): 61(ptr) Variable Function
+ 1110(r012): 61(ptr) Variable Function
+ 1113(r013): 61(ptr) Variable Function
+ 1116(r014): 61(ptr) Variable Function
+ 1119(r015): 61(ptr) Variable Function
+ 1122(r016): 61(ptr) Variable Function
+ 1125(r017): 61(ptr) Variable Function
+ 1128(r018): 7(ptr) Variable Function
+ 1131(r019): 61(ptr) Variable Function
+ 1134(R020): 61(ptr) Variable Function
+ 1137(r021): 61(ptr) Variable Function
+ 1140(r022): 61(ptr) Variable Function
+ 1150(r023): 61(ptr) Variable Function
+ 1153(r024): 61(ptr) Variable Function
+ 1159(r025): 61(ptr) Variable Function
+ 1162(r026): 61(ptr) Variable Function
+ 1166(r026a): 61(ptr) Variable Function
+ 1171(r027): 61(ptr) Variable Function
+ 1174(r028): 61(ptr) Variable Function
+ 1178(r029): 61(ptr) Variable Function
+ 1181(r030): 61(ptr) Variable Function
+ 1185(r031): 61(ptr) Variable Function
+ 1189(r032): 61(ptr) Variable Function
+ 1193(r033): 61(ptr) Variable Function
+ 1196(r034): 61(ptr) Variable Function
+ 1199(r035): 61(ptr) Variable Function
+ 1202(r036): 61(ptr) Variable Function
+ 1207(r037): 61(ptr) Variable Function
+ 1210(r038): 61(ptr) Variable Function
+ 1217(r039): 61(ptr) Variable Function
+ 1220(r049): 61(ptr) Variable Function
+ 1225(r041): 61(ptr) Variable Function
+ 1228(r042): 61(ptr) Variable Function
+ 1232(r043): 61(ptr) Variable Function
+ 1235(r044): 61(ptr) Variable Function
+ 1240(r046): 61(ptr) Variable Function
+ 1065: 60 Load 63(inF0)
+ 1066: 131(bool) All 1065
+ Store 1064(r000) 1066
+ 1068: 60 Load 63(inF0)
+ 1069: 60 ExtInst 1(GLSL.std.450) 4(FAbs) 1068
+ Store 1067(r001) 1069
+ 1070: 60 Load 63(inF0)
+ 1071: 60 ExtInst 1(GLSL.std.450) 17(Acos) 1070
+ 1073: 60 Load 63(inF0)
+ 1074: 131(bool) Any 1073
+ Store 1072(r003) 1074
+ 1076: 60 Load 63(inF0)
+ 1077: 60 ExtInst 1(GLSL.std.450) 16(Asin) 1076
+ Store 1075(r004) 1077
+ 1079: 60 Load 63(inF0)
+ 1080: 60 ExtInst 1(GLSL.std.450) 18(Atan) 1079
+ Store 1078(r005) 1080
+ 1082: 60 Load 63(inF0)
+ 1083: 60 Load 64(inF1)
+ 1084: 60 ExtInst 1(GLSL.std.450) 25(Atan2) 1082 1083
+ Store 1081(r006) 1084
+ 1086: 60 Load 63(inF0)
+ 1087: 60 ExtInst 1(GLSL.std.450) 9(Ceil) 1086
+ Store 1085(r007) 1087
+ 1088: 60 Load 63(inF0)
+ 1091: 1090 FOrdLessThan 1088 1089
+ 1092: 131(bool) Any 1091
+ SelectionMerge 1094 None
+ BranchConditional 1092 1093 1094
+ 1093: Label
Kill
- 1275: Label
- 1278: 56 Load 59(inF0)
- 1279: 56 Load 60(inF1)
- 1280: 56 Load 61(inF2)
- 1281: 56 ExtInst 1(GLSL.std.450) 43(FClamp) 1278 1279 1280
- Store 1277(r008) 1281
- 1283: 56 Load 59(inF0)
- 1284: 56 ExtInst 1(GLSL.std.450) 14(Cos) 1283
- Store 1282(r009) 1284
- 1286: 56 Load 59(inF0)
- 1287: 56 ExtInst 1(GLSL.std.450) 20(Cosh) 1286
- Store 1285(r010) 1287
- 1289: 56 Load 59(inF0)
- 1290: 56 DPdx 1289
- Store 1288(r011) 1290
- 1292: 56 Load 59(inF0)
- 1293: 56 DPdxCoarse 1292
- Store 1291(r012) 1293
- 1295: 56 Load 59(inF0)
- 1296: 56 DPdxFine 1295
- Store 1294(r013) 1296
- 1298: 56 Load 59(inF0)
- 1299: 56 DPdy 1298
- Store 1297(r014) 1299
- 1301: 56 Load 59(inF0)
- 1302: 56 DPdyCoarse 1301
- Store 1300(r015) 1302
- 1304: 56 Load 59(inF0)
- 1305: 56 DPdyFine 1304
- Store 1303(r016) 1305
- 1307: 56 Load 59(inF0)
- 1308: 56 ExtInst 1(GLSL.std.450) 12(Degrees) 1307
- Store 1306(r017) 1308
- 1310: 56 Load 59(inF0)
- 1311: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1310
- Store 1309(r018) 1311
- 1313: 56 Load 59(inF0)
- 1314: 56 ExtInst 1(GLSL.std.450) 27(Exp) 1313
- Store 1312(r019) 1314
- 1316: 56 Load 59(inF0)
- 1317: 56 ExtInst 1(GLSL.std.450) 29(Exp2) 1316
- Store 1315(R020) 1317
- 1319: 56 Load 59(inF0)
- 1320: 56 ExtInst 1(GLSL.std.450) 8(Floor) 1319
- Store 1318(r021) 1320
- 1322: 56 Load 59(inF0)
- 1323: 56 Load 60(inF1)
- 1324: 36(fvec3) CompositeExtract 1322 0
- 1325: 36(fvec3) CompositeExtract 1323 0
- 1326: 36(fvec3) FMod 1324 1325
- 1327: 36(fvec3) CompositeExtract 1322 1
- 1328: 36(fvec3) CompositeExtract 1323 1
- 1329: 36(fvec3) FMod 1327 1328
- 1330: 36(fvec3) CompositeExtract 1322 2
- 1331: 36(fvec3) CompositeExtract 1323 2
- 1332: 36(fvec3) FMod 1330 1331
- 1333: 56 CompositeConstruct 1326 1329 1332
- Store 1321(r022) 1333
- 1335: 56 Load 59(inF0)
- 1336: 56 ExtInst 1(GLSL.std.450) 10(Fract) 1335
- Store 1334(r023) 1336
- 1338: 56 Load 59(inF0)
- 1340:1339(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1338
- 1341: 578(ivec3) CompositeExtract 1340 1
- Store 60(inF1) 1341
- 1342: 56 CompositeExtract 1340 0
- Store 1337(r024) 1342
- 1344: 56 Load 59(inF0)
- 1345: 56 Fwidth 1344
- Store 1343(r025) 1345
- 1347: 56 Load 59(inF0)
- 1348: 56 Load 60(inF1)
- 1349: 56 ExtInst 1(GLSL.std.450) 53(Ldexp) 1347 1348
- Store 1346(r026) 1349
- 1351: 56 Load 59(inF0)
- 1352: 56 Load 60(inF1)
- 1353: 56 Load 61(inF2)
- 1354: 56 ExtInst 1(GLSL.std.450) 46(FMix) 1351 1352 1353
- Store 1350(r026a) 1354
- 1356: 56 Load 59(inF0)
- 1357: 56 ExtInst 1(GLSL.std.450) 28(Log) 1356
- Store 1355(r027) 1357
- 1359: 56 Load 59(inF0)
- 1360: 56 ExtInst 1(GLSL.std.450) 30(Log2) 1359
- 1361: 56 MatrixTimesScalar 1360 253
- Store 1358(r028) 1361
- 1363: 56 Load 59(inF0)
- 1364: 56 ExtInst 1(GLSL.std.450) 30(Log2) 1363
- Store 1362(r029) 1364
- 1366: 56 Load 59(inF0)
- 1367: 56 Load 60(inF1)
- 1368: 56 ExtInst 1(GLSL.std.450) 40(FMax) 1366 1367
- Store 1365(r030) 1368
- 1370: 56 Load 59(inF0)
- 1371: 56 Load 60(inF1)
- 1372: 56 ExtInst 1(GLSL.std.450) 37(FMin) 1370 1371
- Store 1369(r031) 1372
- 1374: 56 Load 59(inF0)
- 1375: 56 Load 60(inF1)
- 1376: 56 ExtInst 1(GLSL.std.450) 26(Pow) 1374 1375
- Store 1373(r032) 1376
- 1378: 56 Load 59(inF0)
- 1379: 56 ExtInst 1(GLSL.std.450) 11(Radians) 1378
- Store 1377(r033) 1379
- 1381: 56 Load 59(inF0)
- 1382: 56 ExtInst 1(GLSL.std.450) 2(RoundEven) 1381
- Store 1380(r034) 1382
- 1384: 56 Load 59(inF0)
- 1385: 56 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1384
- Store 1383(r035) 1385
- 1387: 56 Load 59(inF0)
- 1388: 36(fvec3) CompositeConstruct 165 165 165
- 1389: 36(fvec3) CompositeConstruct 274 274 274
- 1390: 56 ExtInst 1(GLSL.std.450) 43(FClamp) 1387 1388 1389
- Store 1386(r036) 1390
- 1392: 56 Load 59(inF0)
- 1393: 56 ExtInst 1(GLSL.std.450) 6(FSign) 1392
- Store 1391(r037) 1393
- 1395: 56 Load 59(inF0)
- 1396: 56 ExtInst 1(GLSL.std.450) 13(Sin) 1395
- Store 1394(r038) 1396
- 1397: 56 Load 59(inF0)
- 1398: 56 ExtInst 1(GLSL.std.450) 13(Sin) 1397
- Store 60(inF1) 1398
- 1399: 56 Load 59(inF0)
- 1400: 56 ExtInst 1(GLSL.std.450) 14(Cos) 1399
- Store 61(inF2) 1400
- 1402: 56 Load 59(inF0)
- 1403: 56 ExtInst 1(GLSL.std.450) 19(Sinh) 1402
- Store 1401(r039) 1403
- 1405: 56 Load 59(inF0)
- 1406: 56 Load 60(inF1)
- 1407: 56 Load 61(inF2)
- 1408: 56 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1405 1406 1407
- Store 1404(r049) 1408
- 1410: 56 Load 59(inF0)
- 1411: 56 ExtInst 1(GLSL.std.450) 31(Sqrt) 1410
- Store 1409(r041) 1411
- 1413: 56 Load 59(inF0)
- 1414: 56 Load 60(inF1)
- 1415: 56 ExtInst 1(GLSL.std.450) 48(Step) 1413 1414
- Store 1412(r042) 1415
- 1417: 56 Load 59(inF0)
- 1418: 56 ExtInst 1(GLSL.std.450) 15(Tan) 1417
- Store 1416(r043) 1418
- 1420: 56 Load 59(inF0)
- 1421: 56 ExtInst 1(GLSL.std.450) 21(Tanh) 1420
- Store 1419(r044) 1421
- 1422: 56 Load 59(inF0)
- 1423: 56 Transpose 1422
- 1425: 56 Load 59(inF0)
- 1426: 56 ExtInst 1(GLSL.std.450) 3(Trunc) 1425
- Store 1424(r046) 1426
- ReturnValue 1428
+ 1094: Label
+ 1097: 60 Load 63(inF0)
+ 1098: 60 Load 64(inF1)
+ 1099: 60 Load 65(inF2)
+ 1100: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1097 1098 1099
+ Store 1096(r008) 1100
+ 1102: 60 Load 63(inF0)
+ 1103: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1102
+ Store 1101(r009) 1103
+ 1105: 60 Load 63(inF0)
+ 1106: 60 ExtInst 1(GLSL.std.450) 20(Cosh) 1105
+ Store 1104(r010) 1106
+ 1108: 60 Load 63(inF0)
+ 1109: 60 DPdx 1108
+ Store 1107(r011) 1109
+ 1111: 60 Load 63(inF0)
+ 1112: 60 DPdxCoarse 1111
+ Store 1110(r012) 1112
+ 1114: 60 Load 63(inF0)
+ 1115: 60 DPdxFine 1114
+ Store 1113(r013) 1115
+ 1117: 60 Load 63(inF0)
+ 1118: 60 DPdy 1117
+ Store 1116(r014) 1118
+ 1120: 60 Load 63(inF0)
+ 1121: 60 DPdyCoarse 1120
+ Store 1119(r015) 1121
+ 1123: 60 Load 63(inF0)
+ 1124: 60 DPdyFine 1123
+ Store 1122(r016) 1124
+ 1126: 60 Load 63(inF0)
+ 1127: 60 ExtInst 1(GLSL.std.450) 12(Degrees) 1126
+ Store 1125(r017) 1127
+ 1129: 60 Load 63(inF0)
+ 1130: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1129
+ Store 1128(r018) 1130
+ 1132: 60 Load 63(inF0)
+ 1133: 60 ExtInst 1(GLSL.std.450) 27(Exp) 1132
+ Store 1131(r019) 1133
+ 1135: 60 Load 63(inF0)
+ 1136: 60 ExtInst 1(GLSL.std.450) 29(Exp2) 1135
+ Store 1134(R020) 1136
+ 1138: 60 Load 63(inF0)
+ 1139: 60 ExtInst 1(GLSL.std.450) 8(Floor) 1138
+ Store 1137(r021) 1139
+ 1141: 60 Load 63(inF0)
+ 1142: 60 Load 64(inF1)
+ 1143: 24(fvec2) CompositeExtract 1141 0
+ 1144: 24(fvec2) CompositeExtract 1142 0
+ 1145: 24(fvec2) FMod 1143 1144
+ 1146: 24(fvec2) CompositeExtract 1141 1
+ 1147: 24(fvec2) CompositeExtract 1142 1
+ 1148: 24(fvec2) FMod 1146 1147
+ 1149: 60 CompositeConstruct 1145 1148
+ Store 1140(r022) 1149
+ 1151: 60 Load 63(inF0)
+ 1152: 60 ExtInst 1(GLSL.std.450) 10(Fract) 1151
+ Store 1150(r023) 1152
+ 1154: 60 Load 63(inF0)
+ 1156:1155(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1154
+ 1157: 352(ivec2) CompositeExtract 1156 1
+ Store 64(inF1) 1157
+ 1158: 60 CompositeExtract 1156 0
+ Store 1153(r024) 1158
+ 1160: 60 Load 63(inF0)
+ 1161: 60 Fwidth 1160
+ Store 1159(r025) 1161
+ 1163: 60 Load 63(inF0)
+ 1164: 60 Load 64(inF1)
+ 1165: 60 ExtInst 1(GLSL.std.450) 53(Ldexp) 1163 1164
+ Store 1162(r026) 1165
+ 1167: 60 Load 63(inF0)
+ 1168: 60 Load 64(inF1)
+ 1169: 60 Load 65(inF2)
+ 1170: 60 ExtInst 1(GLSL.std.450) 46(FMix) 1167 1168 1169
+ Store 1166(r026a) 1170
+ 1172: 60 Load 63(inF0)
+ 1173: 60 ExtInst 1(GLSL.std.450) 28(Log) 1172
+ Store 1171(r027) 1173
+ 1175: 60 Load 63(inF0)
+ 1176: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1175
+ 1177: 60 MatrixTimesScalar 1176 263
+ Store 1174(r028) 1177
+ 1179: 60 Load 63(inF0)
+ 1180: 60 ExtInst 1(GLSL.std.450) 30(Log2) 1179
+ Store 1178(r029) 1180
+ 1182: 60 Load 63(inF0)
+ 1183: 60 Load 64(inF1)
+ 1184: 60 ExtInst 1(GLSL.std.450) 40(FMax) 1182 1183
+ Store 1181(r030) 1184
+ 1186: 60 Load 63(inF0)
+ 1187: 60 Load 64(inF1)
+ 1188: 60 ExtInst 1(GLSL.std.450) 37(FMin) 1186 1187
+ Store 1185(r031) 1188
+ 1190: 60 Load 63(inF0)
+ 1191: 60 Load 64(inF1)
+ 1192: 60 ExtInst 1(GLSL.std.450) 26(Pow) 1190 1191
+ Store 1189(r032) 1192
+ 1194: 60 Load 63(inF0)
+ 1195: 60 ExtInst 1(GLSL.std.450) 11(Radians) 1194
+ Store 1193(r033) 1195
+ 1197: 60 Load 63(inF0)
+ 1198: 60 ExtInst 1(GLSL.std.450) 2(RoundEven) 1197
+ Store 1196(r034) 1198
+ 1200: 60 Load 63(inF0)
+ 1201: 60 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1200
+ Store 1199(r035) 1201
+ 1203: 60 Load 63(inF0)
+ 1204: 24(fvec2) CompositeConstruct 175 175
+ 1205: 24(fvec2) CompositeConstruct 284 284
+ 1206: 60 ExtInst 1(GLSL.std.450) 43(FClamp) 1203 1204 1205
+ Store 1202(r036) 1206
+ 1208: 60 Load 63(inF0)
+ 1209: 60 ExtInst 1(GLSL.std.450) 6(FSign) 1208
+ Store 1207(r037) 1209
+ 1211: 60 Load 63(inF0)
+ 1212: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1211
+ Store 1210(r038) 1212
+ 1213: 60 Load 63(inF0)
+ 1214: 60 ExtInst 1(GLSL.std.450) 13(Sin) 1213
+ Store 64(inF1) 1214
+ 1215: 60 Load 63(inF0)
+ 1216: 60 ExtInst 1(GLSL.std.450) 14(Cos) 1215
+ Store 65(inF2) 1216
+ 1218: 60 Load 63(inF0)
+ 1219: 60 ExtInst 1(GLSL.std.450) 19(Sinh) 1218
+ Store 1217(r039) 1219
+ 1221: 60 Load 63(inF0)
+ 1222: 60 Load 64(inF1)
+ 1223: 60 Load 65(inF2)
+ 1224: 60 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1221 1222 1223
+ Store 1220(r049) 1224
+ 1226: 60 Load 63(inF0)
+ 1227: 60 ExtInst 1(GLSL.std.450) 31(Sqrt) 1226
+ Store 1225(r041) 1227
+ 1229: 60 Load 63(inF0)
+ 1230: 60 Load 64(inF1)
+ 1231: 60 ExtInst 1(GLSL.std.450) 48(Step) 1229 1230
+ Store 1228(r042) 1231
+ 1233: 60 Load 63(inF0)
+ 1234: 60 ExtInst 1(GLSL.std.450) 15(Tan) 1233
+ Store 1232(r043) 1234
+ 1236: 60 Load 63(inF0)
+ 1237: 60 ExtInst 1(GLSL.std.450) 21(Tanh) 1236
+ Store 1235(r044) 1237
+ 1238: 60 Load 63(inF0)
+ 1239: 60 Transpose 1238
+ 1241: 60 Load 63(inF0)
+ 1242: 60 ExtInst 1(GLSL.std.450) 3(Trunc) 1241
+ Store 1240(r046) 1242
+ ReturnValue 1244
FunctionEnd
-71(PixelShaderFunction4x4(mf44;mf44;mf44;): 65 Function None 67
- 68(inF0): 66(ptr) FunctionParameter
- 69(inF1): 66(ptr) FunctionParameter
- 70(inF2): 66(ptr) FunctionParameter
- 72: Label
- 1431(r000): 122(ptr) Variable Function
- 1434(r001): 66(ptr) Variable Function
- 1439(r003): 122(ptr) Variable Function
- 1442(r004): 66(ptr) Variable Function
- 1445(r005): 66(ptr) Variable Function
- 1448(r006): 66(ptr) Variable Function
- 1452(r007): 66(ptr) Variable Function
- 1463(r008): 66(ptr) Variable Function
- 1468(r009): 66(ptr) Variable Function
- 1471(r010): 66(ptr) Variable Function
- 1474(r011): 66(ptr) Variable Function
- 1477(r012): 66(ptr) Variable Function
- 1480(r013): 66(ptr) Variable Function
- 1483(r014): 66(ptr) Variable Function
- 1486(r015): 66(ptr) Variable Function
- 1489(r016): 66(ptr) Variable Function
- 1492(r017): 66(ptr) Variable Function
- 1495(r018): 7(ptr) Variable Function
- 1498(r019): 66(ptr) Variable Function
- 1501(R020): 66(ptr) Variable Function
- 1504(r021): 66(ptr) Variable Function
- 1507(r022): 66(ptr) Variable Function
- 1523(r023): 66(ptr) Variable Function
- 1526(r024): 66(ptr) Variable Function
- 1532(r025): 66(ptr) Variable Function
- 1535(r026): 66(ptr) Variable Function
- 1539(r026a): 66(ptr) Variable Function
- 1544(r027): 66(ptr) Variable Function
- 1547(r028): 66(ptr) Variable Function
- 1551(r029): 66(ptr) Variable Function
- 1554(r030): 66(ptr) Variable Function
- 1558(r031): 66(ptr) Variable Function
- 1562(r032): 66(ptr) Variable Function
- 1566(r033): 66(ptr) Variable Function
- 1569(r034): 66(ptr) Variable Function
- 1572(r035): 66(ptr) Variable Function
- 1575(r036): 66(ptr) Variable Function
- 1580(r037): 66(ptr) Variable Function
- 1583(r038): 66(ptr) Variable Function
- 1590(r039): 66(ptr) Variable Function
- 1593(r049): 66(ptr) Variable Function
- 1598(r041): 66(ptr) Variable Function
- 1601(r042): 66(ptr) Variable Function
- 1605(r043): 66(ptr) Variable Function
- 1608(r044): 66(ptr) Variable Function
- 1613(r046): 66(ptr) Variable Function
- 1432: 65 Load 68(inF0)
- 1433: 121(bool) All 1432
- Store 1431(r000) 1433
- 1435: 65 Load 68(inF0)
- 1436: 65 ExtInst 1(GLSL.std.450) 4(FAbs) 1435
- Store 1434(r001) 1436
- 1437: 65 Load 68(inF0)
- 1438: 65 ExtInst 1(GLSL.std.450) 17(Acos) 1437
- 1440: 65 Load 68(inF0)
- 1441: 121(bool) Any 1440
- Store 1439(r003) 1441
- 1443: 65 Load 68(inF0)
- 1444: 65 ExtInst 1(GLSL.std.450) 16(Asin) 1443
- Store 1442(r004) 1444
- 1446: 65 Load 68(inF0)
- 1447: 65 ExtInst 1(GLSL.std.450) 18(Atan) 1446
- Store 1445(r005) 1447
- 1449: 65 Load 68(inF0)
- 1450: 65 Load 69(inF1)
- 1451: 65 ExtInst 1(GLSL.std.450) 25(Atan2) 1449 1450
- Store 1448(r006) 1451
- 1453: 65 Load 68(inF0)
- 1454: 65 ExtInst 1(GLSL.std.450) 9(Ceil) 1453
- Store 1452(r007) 1454
- 1455: 65 Load 68(inF0)
- 1458: 1457 FOrdLessThan 1455 1456
- 1459: 121(bool) Any 1458
- SelectionMerge 1461 None
- BranchConditional 1459 1460 1461
- 1460: Label
+74(PixelShaderFunction3x3(mf33;mf33;mf33;): 68 Function None 70
+ 71(inF0): 69(ptr) FunctionParameter
+ 72(inF1): 69(ptr) FunctionParameter
+ 73(inF2): 69(ptr) FunctionParameter
+ 75: Label
+ 1247(r000): 132(ptr) Variable Function
+ 1250(r001): 69(ptr) Variable Function
+ 1255(r003): 132(ptr) Variable Function
+ 1258(r004): 69(ptr) Variable Function
+ 1261(r005): 69(ptr) Variable Function
+ 1264(r006): 69(ptr) Variable Function
+ 1268(r007): 69(ptr) Variable Function
+ 1279(r008): 69(ptr) Variable Function
+ 1284(r009): 69(ptr) Variable Function
+ 1287(r010): 69(ptr) Variable Function
+ 1290(r011): 69(ptr) Variable Function
+ 1293(r012): 69(ptr) Variable Function
+ 1296(r013): 69(ptr) Variable Function
+ 1299(r014): 69(ptr) Variable Function
+ 1302(r015): 69(ptr) Variable Function
+ 1305(r016): 69(ptr) Variable Function
+ 1308(r017): 69(ptr) Variable Function
+ 1311(r018): 7(ptr) Variable Function
+ 1314(r019): 69(ptr) Variable Function
+ 1317(R020): 69(ptr) Variable Function
+ 1320(r021): 69(ptr) Variable Function
+ 1323(r022): 69(ptr) Variable Function
+ 1336(r023): 69(ptr) Variable Function
+ 1339(r024): 69(ptr) Variable Function
+ 1345(r025): 69(ptr) Variable Function
+ 1348(r026): 69(ptr) Variable Function
+ 1352(r026a): 69(ptr) Variable Function
+ 1357(r027): 69(ptr) Variable Function
+ 1360(r028): 69(ptr) Variable Function
+ 1364(r029): 69(ptr) Variable Function
+ 1367(r030): 69(ptr) Variable Function
+ 1371(r031): 69(ptr) Variable Function
+ 1375(r032): 69(ptr) Variable Function
+ 1379(r033): 69(ptr) Variable Function
+ 1382(r034): 69(ptr) Variable Function
+ 1385(r035): 69(ptr) Variable Function
+ 1388(r036): 69(ptr) Variable Function
+ 1393(r037): 69(ptr) Variable Function
+ 1396(r038): 69(ptr) Variable Function
+ 1403(r039): 69(ptr) Variable Function
+ 1406(r049): 69(ptr) Variable Function
+ 1411(r041): 69(ptr) Variable Function
+ 1414(r042): 69(ptr) Variable Function
+ 1418(r043): 69(ptr) Variable Function
+ 1421(r044): 69(ptr) Variable Function
+ 1426(r046): 69(ptr) Variable Function
+ 1248: 68 Load 71(inF0)
+ 1249: 131(bool) All 1248
+ Store 1247(r000) 1249
+ 1251: 68 Load 71(inF0)
+ 1252: 68 ExtInst 1(GLSL.std.450) 4(FAbs) 1251
+ Store 1250(r001) 1252
+ 1253: 68 Load 71(inF0)
+ 1254: 68 ExtInst 1(GLSL.std.450) 17(Acos) 1253
+ 1256: 68 Load 71(inF0)
+ 1257: 131(bool) Any 1256
+ Store 1255(r003) 1257
+ 1259: 68 Load 71(inF0)
+ 1260: 68 ExtInst 1(GLSL.std.450) 16(Asin) 1259
+ Store 1258(r004) 1260
+ 1262: 68 Load 71(inF0)
+ 1263: 68 ExtInst 1(GLSL.std.450) 18(Atan) 1262
+ Store 1261(r005) 1263
+ 1265: 68 Load 71(inF0)
+ 1266: 68 Load 72(inF1)
+ 1267: 68 ExtInst 1(GLSL.std.450) 25(Atan2) 1265 1266
+ Store 1264(r006) 1267
+ 1269: 68 Load 71(inF0)
+ 1270: 68 ExtInst 1(GLSL.std.450) 9(Ceil) 1269
+ Store 1268(r007) 1270
+ 1271: 68 Load 71(inF0)
+ 1274: 1273 FOrdLessThan 1271 1272
+ 1275: 131(bool) Any 1274
+ SelectionMerge 1277 None
+ BranchConditional 1275 1276 1277
+ 1276: Label
Kill
- 1461: Label
- 1464: 65 Load 68(inF0)
- 1465: 65 Load 69(inF1)
- 1466: 65 Load 70(inF2)
- 1467: 65 ExtInst 1(GLSL.std.450) 43(FClamp) 1464 1465 1466
- Store 1463(r008) 1467
- 1469: 65 Load 68(inF0)
- 1470: 65 ExtInst 1(GLSL.std.450) 14(Cos) 1469
- Store 1468(r009) 1470
- 1472: 65 Load 68(inF0)
- 1473: 65 ExtInst 1(GLSL.std.450) 20(Cosh) 1472
- Store 1471(r010) 1473
- 1475: 65 Load 68(inF0)
- 1476: 65 DPdx 1475
- Store 1474(r011) 1476
- 1478: 65 Load 68(inF0)
- 1479: 65 DPdxCoarse 1478
- Store 1477(r012) 1479
- 1481: 65 Load 68(inF0)
- 1482: 65 DPdxFine 1481
- Store 1480(r013) 1482
- 1484: 65 Load 68(inF0)
- 1485: 65 DPdy 1484
- Store 1483(r014) 1485
- 1487: 65 Load 68(inF0)
- 1488: 65 DPdyCoarse 1487
- Store 1486(r015) 1488
- 1490: 65 Load 68(inF0)
- 1491: 65 DPdyFine 1490
- Store 1489(r016) 1491
- 1493: 65 Load 68(inF0)
- 1494: 65 ExtInst 1(GLSL.std.450) 12(Degrees) 1493
- Store 1492(r017) 1494
- 1496: 65 Load 68(inF0)
- 1497: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1496
- Store 1495(r018) 1497
- 1499: 65 Load 68(inF0)
- 1500: 65 ExtInst 1(GLSL.std.450) 27(Exp) 1499
- Store 1498(r019) 1500
- 1502: 65 Load 68(inF0)
- 1503: 65 ExtInst 1(GLSL.std.450) 29(Exp2) 1502
- Store 1501(R020) 1503
- 1505: 65 Load 68(inF0)
- 1506: 65 ExtInst 1(GLSL.std.450) 8(Floor) 1505
- Store 1504(r021) 1506
- 1508: 65 Load 68(inF0)
- 1509: 65 Load 69(inF1)
- 1510: 64(fvec4) CompositeExtract 1508 0
- 1511: 64(fvec4) CompositeExtract 1509 0
- 1512: 64(fvec4) FMod 1510 1511
- 1513: 64(fvec4) CompositeExtract 1508 1
- 1514: 64(fvec4) CompositeExtract 1509 1
- 1515: 64(fvec4) FMod 1513 1514
- 1516: 64(fvec4) CompositeExtract 1508 2
- 1517: 64(fvec4) CompositeExtract 1509 2
- 1518: 64(fvec4) FMod 1516 1517
- 1519: 64(fvec4) CompositeExtract 1508 3
- 1520: 64(fvec4) CompositeExtract 1509 3
- 1521: 64(fvec4) FMod 1519 1520
- 1522: 65 CompositeConstruct 1512 1515 1518 1521
- Store 1507(r022) 1522
- 1524: 65 Load 68(inF0)
- 1525: 65 ExtInst 1(GLSL.std.450) 10(Fract) 1524
- Store 1523(r023) 1525
- 1527: 65 Load 68(inF0)
- 1529:1528(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1527
- 1530: 825(ivec4) CompositeExtract 1529 1
- Store 69(inF1) 1530
- 1531: 65 CompositeExtract 1529 0
- Store 1526(r024) 1531
- 1533: 65 Load 68(inF0)
- 1534: 65 Fwidth 1533
- Store 1532(r025) 1534
- 1536: 65 Load 68(inF0)
- 1537: 65 Load 69(inF1)
- 1538: 65 ExtInst 1(GLSL.std.450) 53(Ldexp) 1536 1537
- Store 1535(r026) 1538
- 1540: 65 Load 68(inF0)
- 1541: 65 Load 69(inF1)
- 1542: 65 Load 70(inF2)
- 1543: 65 ExtInst 1(GLSL.std.450) 46(FMix) 1540 1541 1542
- Store 1539(r026a) 1543
- 1545: 65 Load 68(inF0)
- 1546: 65 ExtInst 1(GLSL.std.450) 28(Log) 1545
- Store 1544(r027) 1546
- 1548: 65 Load 68(inF0)
- 1549: 65 ExtInst 1(GLSL.std.450) 30(Log2) 1548
- 1550: 65 MatrixTimesScalar 1549 253
- Store 1547(r028) 1550
- 1552: 65 Load 68(inF0)
- 1553: 65 ExtInst 1(GLSL.std.450) 30(Log2) 1552
- Store 1551(r029) 1553
- 1555: 65 Load 68(inF0)
- 1556: 65 Load 69(inF1)
- 1557: 65 ExtInst 1(GLSL.std.450) 40(FMax) 1555 1556
- Store 1554(r030) 1557
- 1559: 65 Load 68(inF0)
- 1560: 65 Load 69(inF1)
- 1561: 65 ExtInst 1(GLSL.std.450) 37(FMin) 1559 1560
- Store 1558(r031) 1561
- 1563: 65 Load 68(inF0)
- 1564: 65 Load 69(inF1)
- 1565: 65 ExtInst 1(GLSL.std.450) 26(Pow) 1563 1564
- Store 1562(r032) 1565
- 1567: 65 Load 68(inF0)
- 1568: 65 ExtInst 1(GLSL.std.450) 11(Radians) 1567
- Store 1566(r033) 1568
- 1570: 65 Load 68(inF0)
- 1571: 65 ExtInst 1(GLSL.std.450) 2(RoundEven) 1570
- Store 1569(r034) 1571
- 1573: 65 Load 68(inF0)
- 1574: 65 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1573
- Store 1572(r035) 1574
- 1576: 65 Load 68(inF0)
- 1577: 64(fvec4) CompositeConstruct 165 165 165 165
- 1578: 64(fvec4) CompositeConstruct 274 274 274 274
- 1579: 65 ExtInst 1(GLSL.std.450) 43(FClamp) 1576 1577 1578
- Store 1575(r036) 1579
- 1581: 65 Load 68(inF0)
- 1582: 65 ExtInst 1(GLSL.std.450) 6(FSign) 1581
- Store 1580(r037) 1582
- 1584: 65 Load 68(inF0)
- 1585: 65 ExtInst 1(GLSL.std.450) 13(Sin) 1584
- Store 1583(r038) 1585
- 1586: 65 Load 68(inF0)
- 1587: 65 ExtInst 1(GLSL.std.450) 13(Sin) 1586
- Store 69(inF1) 1587
- 1588: 65 Load 68(inF0)
- 1589: 65 ExtInst 1(GLSL.std.450) 14(Cos) 1588
- Store 70(inF2) 1589
- 1591: 65 Load 68(inF0)
- 1592: 65 ExtInst 1(GLSL.std.450) 19(Sinh) 1591
- Store 1590(r039) 1592
- 1594: 65 Load 68(inF0)
- 1595: 65 Load 69(inF1)
- 1596: 65 Load 70(inF2)
- 1597: 65 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1594 1595 1596
- Store 1593(r049) 1597
- 1599: 65 Load 68(inF0)
- 1600: 65 ExtInst 1(GLSL.std.450) 31(Sqrt) 1599
- Store 1598(r041) 1600
- 1602: 65 Load 68(inF0)
- 1603: 65 Load 69(inF1)
- 1604: 65 ExtInst 1(GLSL.std.450) 48(Step) 1602 1603
- Store 1601(r042) 1604
- 1606: 65 Load 68(inF0)
- 1607: 65 ExtInst 1(GLSL.std.450) 15(Tan) 1606
- Store 1605(r043) 1607
- 1609: 65 Load 68(inF0)
- 1610: 65 ExtInst 1(GLSL.std.450) 21(Tanh) 1609
- Store 1608(r044) 1610
- 1611: 65 Load 68(inF0)
- 1612: 65 Transpose 1611
- 1614: 65 Load 68(inF0)
- 1615: 65 ExtInst 1(GLSL.std.450) 3(Trunc) 1614
- Store 1613(r046) 1615
- ReturnValue 1617
+ 1277: Label
+ 1280: 68 Load 71(inF0)
+ 1281: 68 Load 72(inF1)
+ 1282: 68 Load 73(inF2)
+ 1283: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1280 1281 1282
+ Store 1279(r008) 1283
+ 1285: 68 Load 71(inF0)
+ 1286: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1285
+ Store 1284(r009) 1286
+ 1288: 68 Load 71(inF0)
+ 1289: 68 ExtInst 1(GLSL.std.450) 20(Cosh) 1288
+ Store 1287(r010) 1289
+ 1291: 68 Load 71(inF0)
+ 1292: 68 DPdx 1291
+ Store 1290(r011) 1292
+ 1294: 68 Load 71(inF0)
+ 1295: 68 DPdxCoarse 1294
+ Store 1293(r012) 1295
+ 1297: 68 Load 71(inF0)
+ 1298: 68 DPdxFine 1297
+ Store 1296(r013) 1298
+ 1300: 68 Load 71(inF0)
+ 1301: 68 DPdy 1300
+ Store 1299(r014) 1301
+ 1303: 68 Load 71(inF0)
+ 1304: 68 DPdyCoarse 1303
+ Store 1302(r015) 1304
+ 1306: 68 Load 71(inF0)
+ 1307: 68 DPdyFine 1306
+ Store 1305(r016) 1307
+ 1309: 68 Load 71(inF0)
+ 1310: 68 ExtInst 1(GLSL.std.450) 12(Degrees) 1309
+ Store 1308(r017) 1310
+ 1312: 68 Load 71(inF0)
+ 1313: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1312
+ Store 1311(r018) 1313
+ 1315: 68 Load 71(inF0)
+ 1316: 68 ExtInst 1(GLSL.std.450) 27(Exp) 1315
+ Store 1314(r019) 1316
+ 1318: 68 Load 71(inF0)
+ 1319: 68 ExtInst 1(GLSL.std.450) 29(Exp2) 1318
+ Store 1317(R020) 1319
+ 1321: 68 Load 71(inF0)
+ 1322: 68 ExtInst 1(GLSL.std.450) 8(Floor) 1321
+ Store 1320(r021) 1322
+ 1324: 68 Load 71(inF0)
+ 1325: 68 Load 72(inF1)
+ 1326: 36(fvec3) CompositeExtract 1324 0
+ 1327: 36(fvec3) CompositeExtract 1325 0
+ 1328: 36(fvec3) FMod 1326 1327
+ 1329: 36(fvec3) CompositeExtract 1324 1
+ 1330: 36(fvec3) CompositeExtract 1325 1
+ 1331: 36(fvec3) FMod 1329 1330
+ 1332: 36(fvec3) CompositeExtract 1324 2
+ 1333: 36(fvec3) CompositeExtract 1325 2
+ 1334: 36(fvec3) FMod 1332 1333
+ 1335: 68 CompositeConstruct 1328 1331 1334
+ Store 1323(r022) 1335
+ 1337: 68 Load 71(inF0)
+ 1338: 68 ExtInst 1(GLSL.std.450) 10(Fract) 1337
+ Store 1336(r023) 1338
+ 1340: 68 Load 71(inF0)
+ 1342:1341(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1340
+ 1343: 588(ivec3) CompositeExtract 1342 1
+ Store 72(inF1) 1343
+ 1344: 68 CompositeExtract 1342 0
+ Store 1339(r024) 1344
+ 1346: 68 Load 71(inF0)
+ 1347: 68 Fwidth 1346
+ Store 1345(r025) 1347
+ 1349: 68 Load 71(inF0)
+ 1350: 68 Load 72(inF1)
+ 1351: 68 ExtInst 1(GLSL.std.450) 53(Ldexp) 1349 1350
+ Store 1348(r026) 1351
+ 1353: 68 Load 71(inF0)
+ 1354: 68 Load 72(inF1)
+ 1355: 68 Load 73(inF2)
+ 1356: 68 ExtInst 1(GLSL.std.450) 46(FMix) 1353 1354 1355
+ Store 1352(r026a) 1356
+ 1358: 68 Load 71(inF0)
+ 1359: 68 ExtInst 1(GLSL.std.450) 28(Log) 1358
+ Store 1357(r027) 1359
+ 1361: 68 Load 71(inF0)
+ 1362: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1361
+ 1363: 68 MatrixTimesScalar 1362 263
+ Store 1360(r028) 1363
+ 1365: 68 Load 71(inF0)
+ 1366: 68 ExtInst 1(GLSL.std.450) 30(Log2) 1365
+ Store 1364(r029) 1366
+ 1368: 68 Load 71(inF0)
+ 1369: 68 Load 72(inF1)
+ 1370: 68 ExtInst 1(GLSL.std.450) 40(FMax) 1368 1369
+ Store 1367(r030) 1370
+ 1372: 68 Load 71(inF0)
+ 1373: 68 Load 72(inF1)
+ 1374: 68 ExtInst 1(GLSL.std.450) 37(FMin) 1372 1373
+ Store 1371(r031) 1374
+ 1376: 68 Load 71(inF0)
+ 1377: 68 Load 72(inF1)
+ 1378: 68 ExtInst 1(GLSL.std.450) 26(Pow) 1376 1377
+ Store 1375(r032) 1378
+ 1380: 68 Load 71(inF0)
+ 1381: 68 ExtInst 1(GLSL.std.450) 11(Radians) 1380
+ Store 1379(r033) 1381
+ 1383: 68 Load 71(inF0)
+ 1384: 68 ExtInst 1(GLSL.std.450) 2(RoundEven) 1383
+ Store 1382(r034) 1384
+ 1386: 68 Load 71(inF0)
+ 1387: 68 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1386
+ Store 1385(r035) 1387
+ 1389: 68 Load 71(inF0)
+ 1390: 36(fvec3) CompositeConstruct 175 175 175
+ 1391: 36(fvec3) CompositeConstruct 284 284 284
+ 1392: 68 ExtInst 1(GLSL.std.450) 43(FClamp) 1389 1390 1391
+ Store 1388(r036) 1392
+ 1394: 68 Load 71(inF0)
+ 1395: 68 ExtInst 1(GLSL.std.450) 6(FSign) 1394
+ Store 1393(r037) 1395
+ 1397: 68 Load 71(inF0)
+ 1398: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1397
+ Store 1396(r038) 1398
+ 1399: 68 Load 71(inF0)
+ 1400: 68 ExtInst 1(GLSL.std.450) 13(Sin) 1399
+ Store 72(inF1) 1400
+ 1401: 68 Load 71(inF0)
+ 1402: 68 ExtInst 1(GLSL.std.450) 14(Cos) 1401
+ Store 73(inF2) 1402
+ 1404: 68 Load 71(inF0)
+ 1405: 68 ExtInst 1(GLSL.std.450) 19(Sinh) 1404
+ Store 1403(r039) 1405
+ 1407: 68 Load 71(inF0)
+ 1408: 68 Load 72(inF1)
+ 1409: 68 Load 73(inF2)
+ 1410: 68 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1407 1408 1409
+ Store 1406(r049) 1410
+ 1412: 68 Load 71(inF0)
+ 1413: 68 ExtInst 1(GLSL.std.450) 31(Sqrt) 1412
+ Store 1411(r041) 1413
+ 1415: 68 Load 71(inF0)
+ 1416: 68 Load 72(inF1)
+ 1417: 68 ExtInst 1(GLSL.std.450) 48(Step) 1415 1416
+ Store 1414(r042) 1417
+ 1419: 68 Load 71(inF0)
+ 1420: 68 ExtInst 1(GLSL.std.450) 15(Tan) 1419
+ Store 1418(r043) 1420
+ 1422: 68 Load 71(inF0)
+ 1423: 68 ExtInst 1(GLSL.std.450) 21(Tanh) 1422
+ Store 1421(r044) 1423
+ 1424: 68 Load 71(inF0)
+ 1425: 68 Transpose 1424
+ 1427: 68 Load 71(inF0)
+ 1428: 68 ExtInst 1(GLSL.std.450) 3(Trunc) 1427
+ Store 1426(r046) 1428
+ ReturnValue 1430
FunctionEnd
-80(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 73
- 74(inF0): 7(ptr) FunctionParameter
- 75(inF1): 7(ptr) FunctionParameter
- 76(inFV0): 25(ptr) FunctionParameter
- 77(inFV1): 25(ptr) FunctionParameter
- 78(inFM0): 49(ptr) FunctionParameter
- 79(inFM1): 49(ptr) FunctionParameter
- 81: Label
- 1620(r0): 7(ptr) Variable Function
- 1624(r1): 25(ptr) Variable Function
- 1628(r2): 25(ptr) Variable Function
- 1632(r3): 7(ptr) Variable Function
- 1636(r4): 25(ptr) Variable Function
- 1640(r5): 25(ptr) Variable Function
- 1644(r6): 49(ptr) Variable Function
- 1648(r7): 49(ptr) Variable Function
- 1652(r8): 49(ptr) Variable Function
- 1621: 6(float) Load 74(inF0)
- 1622: 6(float) Load 75(inF1)
- 1623: 6(float) FMul 1621 1622
- Store 1620(r0) 1623
- 1625: 24(fvec2) Load 76(inFV0)
- 1626: 6(float) Load 74(inF0)
- 1627: 24(fvec2) VectorTimesScalar 1625 1626
- Store 1624(r1) 1627
- 1629: 6(float) Load 74(inF0)
- 1630: 24(fvec2) Load 76(inFV0)
- 1631: 24(fvec2) VectorTimesScalar 1630 1629
- Store 1628(r2) 1631
- 1633: 24(fvec2) Load 76(inFV0)
- 1634: 24(fvec2) Load 77(inFV1)
- 1635: 6(float) Dot 1633 1634
- Store 1632(r3) 1635
- 1637: 48 Load 78(inFM0)
- 1638: 24(fvec2) Load 76(inFV0)
- 1639: 24(fvec2) MatrixTimesVector 1637 1638
- Store 1636(r4) 1639
- 1641: 24(fvec2) Load 76(inFV0)
- 1642: 48 Load 78(inFM0)
- 1643: 24(fvec2) VectorTimesMatrix 1641 1642
- Store 1640(r5) 1643
- 1645: 48 Load 78(inFM0)
- 1646: 6(float) Load 74(inF0)
- 1647: 48 MatrixTimesScalar 1645 1646
- Store 1644(r6) 1647
- 1649: 6(float) Load 74(inF0)
- 1650: 48 Load 78(inFM0)
- 1651: 48 MatrixTimesScalar 1650 1649
- Store 1648(r7) 1651
- 1653: 48 Load 78(inFM0)
- 1654: 48 Load 79(inFM1)
- 1655: 48 MatrixTimesMatrix 1653 1654
- Store 1652(r8) 1655
+82(PixelShaderFunction4x4(mf44;mf44;mf44;): 76 Function None 78
+ 79(inF0): 77(ptr) FunctionParameter
+ 80(inF1): 77(ptr) FunctionParameter
+ 81(inF2): 77(ptr) FunctionParameter
+ 83: Label
+ 1433(r000): 132(ptr) Variable Function
+ 1436(r001): 77(ptr) Variable Function
+ 1441(r003): 132(ptr) Variable Function
+ 1444(r004): 77(ptr) Variable Function
+ 1447(r005): 77(ptr) Variable Function
+ 1450(r006): 77(ptr) Variable Function
+ 1454(r007): 77(ptr) Variable Function
+ 1465(r008): 77(ptr) Variable Function
+ 1470(r009): 77(ptr) Variable Function
+ 1473(r010): 77(ptr) Variable Function
+ 1476(r011): 77(ptr) Variable Function
+ 1479(r012): 77(ptr) Variable Function
+ 1482(r013): 77(ptr) Variable Function
+ 1485(r014): 77(ptr) Variable Function
+ 1488(r015): 77(ptr) Variable Function
+ 1491(r016): 77(ptr) Variable Function
+ 1494(r017): 77(ptr) Variable Function
+ 1497(r018): 7(ptr) Variable Function
+ 1500(r019): 77(ptr) Variable Function
+ 1503(R020): 77(ptr) Variable Function
+ 1506(r021): 77(ptr) Variable Function
+ 1509(r022): 77(ptr) Variable Function
+ 1525(r023): 77(ptr) Variable Function
+ 1528(r024): 77(ptr) Variable Function
+ 1534(r025): 77(ptr) Variable Function
+ 1537(r026): 77(ptr) Variable Function
+ 1541(r026a): 77(ptr) Variable Function
+ 1546(r027): 77(ptr) Variable Function
+ 1549(r028): 77(ptr) Variable Function
+ 1553(r029): 77(ptr) Variable Function
+ 1556(r030): 77(ptr) Variable Function
+ 1560(r031): 77(ptr) Variable Function
+ 1564(r032): 77(ptr) Variable Function
+ 1568(r033): 77(ptr) Variable Function
+ 1571(r034): 77(ptr) Variable Function
+ 1574(r035): 77(ptr) Variable Function
+ 1577(r036): 77(ptr) Variable Function
+ 1582(r037): 77(ptr) Variable Function
+ 1585(r038): 77(ptr) Variable Function
+ 1592(r039): 77(ptr) Variable Function
+ 1595(r049): 77(ptr) Variable Function
+ 1600(r041): 77(ptr) Variable Function
+ 1603(r042): 77(ptr) Variable Function
+ 1607(r043): 77(ptr) Variable Function
+ 1610(r044): 77(ptr) Variable Function
+ 1615(r046): 77(ptr) Variable Function
+ 1434: 76 Load 79(inF0)
+ 1435: 131(bool) All 1434
+ Store 1433(r000) 1435
+ 1437: 76 Load 79(inF0)
+ 1438: 76 ExtInst 1(GLSL.std.450) 4(FAbs) 1437
+ Store 1436(r001) 1438
+ 1439: 76 Load 79(inF0)
+ 1440: 76 ExtInst 1(GLSL.std.450) 17(Acos) 1439
+ 1442: 76 Load 79(inF0)
+ 1443: 131(bool) Any 1442
+ Store 1441(r003) 1443
+ 1445: 76 Load 79(inF0)
+ 1446: 76 ExtInst 1(GLSL.std.450) 16(Asin) 1445
+ Store 1444(r004) 1446
+ 1448: 76 Load 79(inF0)
+ 1449: 76 ExtInst 1(GLSL.std.450) 18(Atan) 1448
+ Store 1447(r005) 1449
+ 1451: 76 Load 79(inF0)
+ 1452: 76 Load 80(inF1)
+ 1453: 76 ExtInst 1(GLSL.std.450) 25(Atan2) 1451 1452
+ Store 1450(r006) 1453
+ 1455: 76 Load 79(inF0)
+ 1456: 76 ExtInst 1(GLSL.std.450) 9(Ceil) 1455
+ Store 1454(r007) 1456
+ 1457: 76 Load 79(inF0)
+ 1460: 1459 FOrdLessThan 1457 1458
+ 1461: 131(bool) Any 1460
+ SelectionMerge 1463 None
+ BranchConditional 1461 1462 1463
+ 1462: Label
+ Kill
+ 1463: Label
+ 1466: 76 Load 79(inF0)
+ 1467: 76 Load 80(inF1)
+ 1468: 76 Load 81(inF2)
+ 1469: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1466 1467 1468
+ Store 1465(r008) 1469
+ 1471: 76 Load 79(inF0)
+ 1472: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1471
+ Store 1470(r009) 1472
+ 1474: 76 Load 79(inF0)
+ 1475: 76 ExtInst 1(GLSL.std.450) 20(Cosh) 1474
+ Store 1473(r010) 1475
+ 1477: 76 Load 79(inF0)
+ 1478: 76 DPdx 1477
+ Store 1476(r011) 1478
+ 1480: 76 Load 79(inF0)
+ 1481: 76 DPdxCoarse 1480
+ Store 1479(r012) 1481
+ 1483: 76 Load 79(inF0)
+ 1484: 76 DPdxFine 1483
+ Store 1482(r013) 1484
+ 1486: 76 Load 79(inF0)
+ 1487: 76 DPdy 1486
+ Store 1485(r014) 1487
+ 1489: 76 Load 79(inF0)
+ 1490: 76 DPdyCoarse 1489
+ Store 1488(r015) 1490
+ 1492: 76 Load 79(inF0)
+ 1493: 76 DPdyFine 1492
+ Store 1491(r016) 1493
+ 1495: 76 Load 79(inF0)
+ 1496: 76 ExtInst 1(GLSL.std.450) 12(Degrees) 1495
+ Store 1494(r017) 1496
+ 1498: 76 Load 79(inF0)
+ 1499: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1498
+ Store 1497(r018) 1499
+ 1501: 76 Load 79(inF0)
+ 1502: 76 ExtInst 1(GLSL.std.450) 27(Exp) 1501
+ Store 1500(r019) 1502
+ 1504: 76 Load 79(inF0)
+ 1505: 76 ExtInst 1(GLSL.std.450) 29(Exp2) 1504
+ Store 1503(R020) 1505
+ 1507: 76 Load 79(inF0)
+ 1508: 76 ExtInst 1(GLSL.std.450) 8(Floor) 1507
+ Store 1506(r021) 1508
+ 1510: 76 Load 79(inF0)
+ 1511: 76 Load 80(inF1)
+ 1512: 48(fvec4) CompositeExtract 1510 0
+ 1513: 48(fvec4) CompositeExtract 1511 0
+ 1514: 48(fvec4) FMod 1512 1513
+ 1515: 48(fvec4) CompositeExtract 1510 1
+ 1516: 48(fvec4) CompositeExtract 1511 1
+ 1517: 48(fvec4) FMod 1515 1516
+ 1518: 48(fvec4) CompositeExtract 1510 2
+ 1519: 48(fvec4) CompositeExtract 1511 2
+ 1520: 48(fvec4) FMod 1518 1519
+ 1521: 48(fvec4) CompositeExtract 1510 3
+ 1522: 48(fvec4) CompositeExtract 1511 3
+ 1523: 48(fvec4) FMod 1521 1522
+ 1524: 76 CompositeConstruct 1514 1517 1520 1523
+ Store 1509(r022) 1524
+ 1526: 76 Load 79(inF0)
+ 1527: 76 ExtInst 1(GLSL.std.450) 10(Fract) 1526
+ Store 1525(r023) 1527
+ 1529: 76 Load 79(inF0)
+ 1531:1530(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1529
+ 1532: 833(ivec4) CompositeExtract 1531 1
+ Store 80(inF1) 1532
+ 1533: 76 CompositeExtract 1531 0
+ Store 1528(r024) 1533
+ 1535: 76 Load 79(inF0)
+ 1536: 76 Fwidth 1535
+ Store 1534(r025) 1536
+ 1538: 76 Load 79(inF0)
+ 1539: 76 Load 80(inF1)
+ 1540: 76 ExtInst 1(GLSL.std.450) 53(Ldexp) 1538 1539
+ Store 1537(r026) 1540
+ 1542: 76 Load 79(inF0)
+ 1543: 76 Load 80(inF1)
+ 1544: 76 Load 81(inF2)
+ 1545: 76 ExtInst 1(GLSL.std.450) 46(FMix) 1542 1543 1544
+ Store 1541(r026a) 1545
+ 1547: 76 Load 79(inF0)
+ 1548: 76 ExtInst 1(GLSL.std.450) 28(Log) 1547
+ Store 1546(r027) 1548
+ 1550: 76 Load 79(inF0)
+ 1551: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1550
+ 1552: 76 MatrixTimesScalar 1551 263
+ Store 1549(r028) 1552
+ 1554: 76 Load 79(inF0)
+ 1555: 76 ExtInst 1(GLSL.std.450) 30(Log2) 1554
+ Store 1553(r029) 1555
+ 1557: 76 Load 79(inF0)
+ 1558: 76 Load 80(inF1)
+ 1559: 76 ExtInst 1(GLSL.std.450) 40(FMax) 1557 1558
+ Store 1556(r030) 1559
+ 1561: 76 Load 79(inF0)
+ 1562: 76 Load 80(inF1)
+ 1563: 76 ExtInst 1(GLSL.std.450) 37(FMin) 1561 1562
+ Store 1560(r031) 1563
+ 1565: 76 Load 79(inF0)
+ 1566: 76 Load 80(inF1)
+ 1567: 76 ExtInst 1(GLSL.std.450) 26(Pow) 1565 1566
+ Store 1564(r032) 1567
+ 1569: 76 Load 79(inF0)
+ 1570: 76 ExtInst 1(GLSL.std.450) 11(Radians) 1569
+ Store 1568(r033) 1570
+ 1572: 76 Load 79(inF0)
+ 1573: 76 ExtInst 1(GLSL.std.450) 2(RoundEven) 1572
+ Store 1571(r034) 1573
+ 1575: 76 Load 79(inF0)
+ 1576: 76 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1575
+ Store 1574(r035) 1576
+ 1578: 76 Load 79(inF0)
+ 1579: 48(fvec4) CompositeConstruct 175 175 175 175
+ 1580: 48(fvec4) CompositeConstruct 284 284 284 284
+ 1581: 76 ExtInst 1(GLSL.std.450) 43(FClamp) 1578 1579 1580
+ Store 1577(r036) 1581
+ 1583: 76 Load 79(inF0)
+ 1584: 76 ExtInst 1(GLSL.std.450) 6(FSign) 1583
+ Store 1582(r037) 1584
+ 1586: 76 Load 79(inF0)
+ 1587: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1586
+ Store 1585(r038) 1587
+ 1588: 76 Load 79(inF0)
+ 1589: 76 ExtInst 1(GLSL.std.450) 13(Sin) 1588
+ Store 80(inF1) 1589
+ 1590: 76 Load 79(inF0)
+ 1591: 76 ExtInst 1(GLSL.std.450) 14(Cos) 1590
+ Store 81(inF2) 1591
+ 1593: 76 Load 79(inF0)
+ 1594: 76 ExtInst 1(GLSL.std.450) 19(Sinh) 1593
+ Store 1592(r039) 1594
+ 1596: 76 Load 79(inF0)
+ 1597: 76 Load 80(inF1)
+ 1598: 76 Load 81(inF2)
+ 1599: 76 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1596 1597 1598
+ Store 1595(r049) 1599
+ 1601: 76 Load 79(inF0)
+ 1602: 76 ExtInst 1(GLSL.std.450) 31(Sqrt) 1601
+ Store 1600(r041) 1602
+ 1604: 76 Load 79(inF0)
+ 1605: 76 Load 80(inF1)
+ 1606: 76 ExtInst 1(GLSL.std.450) 48(Step) 1604 1605
+ Store 1603(r042) 1606
+ 1608: 76 Load 79(inF0)
+ 1609: 76 ExtInst 1(GLSL.std.450) 15(Tan) 1608
+ Store 1607(r043) 1609
+ 1611: 76 Load 79(inF0)
+ 1612: 76 ExtInst 1(GLSL.std.450) 21(Tanh) 1611
+ Store 1610(r044) 1612
+ 1613: 76 Load 79(inF0)
+ 1614: 76 Transpose 1613
+ 1616: 76 Load 79(inF0)
+ 1617: 76 ExtInst 1(GLSL.std.450) 3(Trunc) 1616
+ Store 1615(r046) 1617
+ ReturnValue 1619
+ FunctionEnd
+91(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 84
+ 85(inF0): 7(ptr) FunctionParameter
+ 86(inF1): 7(ptr) FunctionParameter
+ 87(inFV0): 25(ptr) FunctionParameter
+ 88(inFV1): 25(ptr) FunctionParameter
+ 89(inFM0): 61(ptr) FunctionParameter
+ 90(inFM1): 61(ptr) FunctionParameter
+ 92: Label
+ 1622(r0): 7(ptr) Variable Function
+ 1626(r1): 25(ptr) Variable Function
+ 1630(r2): 25(ptr) Variable Function
+ 1634(r3): 7(ptr) Variable Function
+ 1638(r4): 25(ptr) Variable Function
+ 1642(r5): 25(ptr) Variable Function
+ 1646(r6): 61(ptr) Variable Function
+ 1650(r7): 61(ptr) Variable Function
+ 1654(r8): 61(ptr) Variable Function
+ 1623: 6(float) Load 86(inF1)
+ 1624: 6(float) Load 85(inF0)
+ 1625: 6(float) FMul 1623 1624
+ Store 1622(r0) 1625
+ 1627: 6(float) Load 85(inF0)
+ 1628: 24(fvec2) Load 87(inFV0)
+ 1629: 24(fvec2) VectorTimesScalar 1628 1627
+ Store 1626(r1) 1629
+ 1631: 24(fvec2) Load 87(inFV0)
+ 1632: 6(float) Load 85(inF0)
+ 1633: 24(fvec2) VectorTimesScalar 1631 1632
+ Store 1630(r2) 1633
+ 1635: 24(fvec2) Load 87(inFV0)
+ 1636: 24(fvec2) Load 88(inFV1)
+ 1637: 6(float) Dot 1635 1636
+ Store 1634(r3) 1637
+ 1639: 24(fvec2) Load 87(inFV0)
+ 1640: 60 Load 89(inFM0)
+ 1641: 24(fvec2) VectorTimesMatrix 1639 1640
+ Store 1638(r4) 1641
+ 1643: 60 Load 89(inFM0)
+ 1644: 24(fvec2) Load 87(inFV0)
+ 1645: 24(fvec2) MatrixTimesVector 1643 1644
+ Store 1642(r5) 1645
+ 1647: 6(float) Load 85(inF0)
+ 1648: 60 Load 89(inFM0)
+ 1649: 60 MatrixTimesScalar 1648 1647
+ Store 1646(r6) 1649
+ 1651: 60 Load 89(inFM0)
+ 1652: 6(float) Load 85(inF0)
+ 1653: 60 MatrixTimesScalar 1651 1652
+ Store 1650(r7) 1653
+ 1655: 60 Load 90(inFM1)
+ 1656: 60 Load 89(inFM0)
+ 1657: 60 MatrixTimesMatrix 1655 1656
+ Store 1654(r8) 1657
Return
FunctionEnd
-89(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 82
- 83(inF0): 7(ptr) FunctionParameter
- 84(inF1): 7(ptr) FunctionParameter
- 85(inFV0): 37(ptr) FunctionParameter
- 86(inFV1): 37(ptr) FunctionParameter
- 87(inFM0): 57(ptr) FunctionParameter
- 88(inFM1): 57(ptr) FunctionParameter
- 90: Label
- 1656(r0): 7(ptr) Variable Function
- 1660(r1): 37(ptr) Variable Function
- 1664(r2): 37(ptr) Variable Function
- 1668(r3): 7(ptr) Variable Function
- 1672(r4): 37(ptr) Variable Function
- 1676(r5): 37(ptr) Variable Function
- 1680(r6): 57(ptr) Variable Function
- 1684(r7): 57(ptr) Variable Function
- 1688(r8): 57(ptr) Variable Function
- 1657: 6(float) Load 83(inF0)
- 1658: 6(float) Load 84(inF1)
- 1659: 6(float) FMul 1657 1658
- Store 1656(r0) 1659
- 1661: 36(fvec3) Load 85(inFV0)
- 1662: 6(float) Load 83(inF0)
- 1663: 36(fvec3) VectorTimesScalar 1661 1662
- Store 1660(r1) 1663
- 1665: 6(float) Load 83(inF0)
- 1666: 36(fvec3) Load 85(inFV0)
- 1667: 36(fvec3) VectorTimesScalar 1666 1665
- Store 1664(r2) 1667
- 1669: 36(fvec3) Load 85(inFV0)
- 1670: 36(fvec3) Load 86(inFV1)
- 1671: 6(float) Dot 1669 1670
- Store 1668(r3) 1671
- 1673: 56 Load 87(inFM0)
- 1674: 36(fvec3) Load 85(inFV0)
- 1675: 36(fvec3) MatrixTimesVector 1673 1674
- Store 1672(r4) 1675
- 1677: 36(fvec3) Load 85(inFV0)
- 1678: 56 Load 87(inFM0)
- 1679: 36(fvec3) VectorTimesMatrix 1677 1678
- Store 1676(r5) 1679
- 1681: 56 Load 87(inFM0)
- 1682: 6(float) Load 83(inF0)
- 1683: 56 MatrixTimesScalar 1681 1682
- Store 1680(r6) 1683
- 1685: 6(float) Load 83(inF0)
- 1686: 56 Load 87(inFM0)
- 1687: 56 MatrixTimesScalar 1686 1685
- Store 1684(r7) 1687
- 1689: 56 Load 87(inFM0)
- 1690: 56 Load 88(inFM1)
- 1691: 56 MatrixTimesMatrix 1689 1690
- Store 1688(r8) 1691
+100(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 93
+ 94(inF0): 7(ptr) FunctionParameter
+ 95(inF1): 7(ptr) FunctionParameter
+ 96(inFV0): 37(ptr) FunctionParameter
+ 97(inFV1): 37(ptr) FunctionParameter
+ 98(inFM0): 69(ptr) FunctionParameter
+ 99(inFM1): 69(ptr) FunctionParameter
+ 101: Label
+ 1658(r0): 7(ptr) Variable Function
+ 1662(r1): 37(ptr) Variable Function
+ 1666(r2): 37(ptr) Variable Function
+ 1670(r3): 7(ptr) Variable Function
+ 1674(r4): 37(ptr) Variable Function
+ 1678(r5): 37(ptr) Variable Function
+ 1682(r6): 69(ptr) Variable Function
+ 1686(r7): 69(ptr) Variable Function
+ 1690(r8): 69(ptr) Variable Function
+ 1659: 6(float) Load 95(inF1)
+ 1660: 6(float) Load 94(inF0)
+ 1661: 6(float) FMul 1659 1660
+ Store 1658(r0) 1661
+ 1663: 6(float) Load 94(inF0)
+ 1664: 36(fvec3) Load 96(inFV0)
+ 1665: 36(fvec3) VectorTimesScalar 1664 1663
+ Store 1662(r1) 1665
+ 1667: 36(fvec3) Load 96(inFV0)
+ 1668: 6(float) Load 94(inF0)
+ 1669: 36(fvec3) VectorTimesScalar 1667 1668
+ Store 1666(r2) 1669
+ 1671: 36(fvec3) Load 96(inFV0)
+ 1672: 36(fvec3) Load 97(inFV1)
+ 1673: 6(float) Dot 1671 1672
+ Store 1670(r3) 1673
+ 1675: 36(fvec3) Load 96(inFV0)
+ 1676: 68 Load 98(inFM0)
+ 1677: 36(fvec3) VectorTimesMatrix 1675 1676
+ Store 1674(r4) 1677
+ 1679: 68 Load 98(inFM0)
+ 1680: 36(fvec3) Load 96(inFV0)
+ 1681: 36(fvec3) MatrixTimesVector 1679 1680
+ Store 1678(r5) 1681
+ 1683: 6(float) Load 94(inF0)
+ 1684: 68 Load 98(inFM0)
+ 1685: 68 MatrixTimesScalar 1684 1683
+ Store 1682(r6) 1685
+ 1687: 68 Load 98(inFM0)
+ 1688: 6(float) Load 94(inF0)
+ 1689: 68 MatrixTimesScalar 1687 1688
+ Store 1686(r7) 1689
+ 1691: 68 Load 99(inFM1)
+ 1692: 68 Load 98(inFM0)
+ 1693: 68 MatrixTimesMatrix 1691 1692
+ Store 1690(r8) 1693
Return
FunctionEnd
-99(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 92
- 93(inF0): 7(ptr) FunctionParameter
- 94(inF1): 7(ptr) FunctionParameter
- 95(inFV0): 91(ptr) FunctionParameter
- 96(inFV1): 91(ptr) FunctionParameter
- 97(inFM0): 66(ptr) FunctionParameter
- 98(inFM1): 66(ptr) FunctionParameter
- 100: Label
- 1692(r0): 7(ptr) Variable Function
- 1696(r1): 91(ptr) Variable Function
- 1700(r2): 91(ptr) Variable Function
- 1704(r3): 7(ptr) Variable Function
- 1708(r4): 91(ptr) Variable Function
- 1712(r5): 91(ptr) Variable Function
- 1716(r6): 66(ptr) Variable Function
- 1720(r7): 66(ptr) Variable Function
- 1724(r8): 66(ptr) Variable Function
- 1693: 6(float) Load 93(inF0)
- 1694: 6(float) Load 94(inF1)
- 1695: 6(float) FMul 1693 1694
- Store 1692(r0) 1695
- 1697: 64(fvec4) Load 95(inFV0)
- 1698: 6(float) Load 93(inF0)
- 1699: 64(fvec4) VectorTimesScalar 1697 1698
- Store 1696(r1) 1699
- 1701: 6(float) Load 93(inF0)
- 1702: 64(fvec4) Load 95(inFV0)
- 1703: 64(fvec4) VectorTimesScalar 1702 1701
- Store 1700(r2) 1703
- 1705: 64(fvec4) Load 95(inFV0)
- 1706: 64(fvec4) Load 96(inFV1)
- 1707: 6(float) Dot 1705 1706
- Store 1704(r3) 1707
- 1709: 65 Load 97(inFM0)
- 1710: 64(fvec4) Load 95(inFV0)
- 1711: 64(fvec4) MatrixTimesVector 1709 1710
- Store 1708(r4) 1711
- 1713: 64(fvec4) Load 95(inFV0)
- 1714: 65 Load 97(inFM0)
- 1715: 64(fvec4) VectorTimesMatrix 1713 1714
- Store 1712(r5) 1715
- 1717: 65 Load 97(inFM0)
- 1718: 6(float) Load 93(inF0)
- 1719: 65 MatrixTimesScalar 1717 1718
- Store 1716(r6) 1719
- 1721: 6(float) Load 93(inF0)
- 1722: 65 Load 97(inFM0)
- 1723: 65 MatrixTimesScalar 1722 1721
- Store 1720(r7) 1723
- 1725: 65 Load 97(inFM0)
- 1726: 65 Load 98(inFM1)
- 1727: 65 MatrixTimesMatrix 1725 1726
- Store 1724(r8) 1727
+109(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 102
+ 103(inF0): 7(ptr) FunctionParameter
+ 104(inF1): 7(ptr) FunctionParameter
+ 105(inFV0): 49(ptr) FunctionParameter
+ 106(inFV1): 49(ptr) FunctionParameter
+ 107(inFM0): 77(ptr) FunctionParameter
+ 108(inFM1): 77(ptr) FunctionParameter
+ 110: Label
+ 1694(r0): 7(ptr) Variable Function
+ 1698(r1): 49(ptr) Variable Function
+ 1702(r2): 49(ptr) Variable Function
+ 1706(r3): 7(ptr) Variable Function
+ 1710(r4): 49(ptr) Variable Function
+ 1714(r5): 49(ptr) Variable Function
+ 1718(r6): 77(ptr) Variable Function
+ 1722(r7): 77(ptr) Variable Function
+ 1726(r8): 77(ptr) Variable Function
+ 1695: 6(float) Load 104(inF1)
+ 1696: 6(float) Load 103(inF0)
+ 1697: 6(float) FMul 1695 1696
+ Store 1694(r0) 1697
+ 1699: 6(float) Load 103(inF0)
+ 1700: 48(fvec4) Load 105(inFV0)
+ 1701: 48(fvec4) VectorTimesScalar 1700 1699
+ Store 1698(r1) 1701
+ 1703: 48(fvec4) Load 105(inFV0)
+ 1704: 6(float) Load 103(inF0)
+ 1705: 48(fvec4) VectorTimesScalar 1703 1704
+ Store 1702(r2) 1705
+ 1707: 48(fvec4) Load 105(inFV0)
+ 1708: 48(fvec4) Load 106(inFV1)
+ 1709: 6(float) Dot 1707 1708
+ Store 1706(r3) 1709
+ 1711: 48(fvec4) Load 105(inFV0)
+ 1712: 76 Load 107(inFM0)
+ 1713: 48(fvec4) VectorTimesMatrix 1711 1712
+ Store 1710(r4) 1713
+ 1715: 76 Load 107(inFM0)
+ 1716: 48(fvec4) Load 105(inFV0)
+ 1717: 48(fvec4) MatrixTimesVector 1715 1716
+ Store 1714(r5) 1717
+ 1719: 6(float) Load 103(inF0)
+ 1720: 76 Load 107(inFM0)
+ 1721: 76 MatrixTimesScalar 1720 1719
+ Store 1718(r6) 1721
+ 1723: 76 Load 107(inFM0)
+ 1724: 6(float) Load 103(inF0)
+ 1725: 76 MatrixTimesScalar 1723 1724
+ Store 1722(r7) 1725
+ 1727: 76 Load 108(inFM1)
+ 1728: 76 Load 107(inFM0)
+ 1729: 76 MatrixTimesMatrix 1727 1728
+ Store 1726(r8) 1729
Return
FunctionEnd
-119(TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;): 2 Function None 109
- 110(inF0): 7(ptr) FunctionParameter
- 111(inF1): 7(ptr) FunctionParameter
- 112(inFV2): 25(ptr) FunctionParameter
- 113(inFV3): 37(ptr) FunctionParameter
- 114(inFM2x3): 102(ptr) FunctionParameter
- 115(inFM3x2): 104(ptr) FunctionParameter
- 116(inFM3x3): 57(ptr) FunctionParameter
- 117(inFM3x4): 106(ptr) FunctionParameter
- 118(inFM2x4): 108(ptr) FunctionParameter
- 120: Label
- 1728(r00): 7(ptr) Variable Function
- 1732(r01): 25(ptr) Variable Function
- 1736(r02): 37(ptr) Variable Function
- 1740(r03): 25(ptr) Variable Function
- 1744(r04): 37(ptr) Variable Function
- 1748(r05): 7(ptr) Variable Function
- 1752(r06): 7(ptr) Variable Function
- 1756(r07): 37(ptr) Variable Function
- 1760(r08): 25(ptr) Variable Function
- 1764(r09): 25(ptr) Variable Function
- 1768(r10): 37(ptr) Variable Function
- 1772(r11): 102(ptr) Variable Function
- 1776(r12): 104(ptr) Variable Function
- 1780(r13): 49(ptr) Variable Function
- 1784(r14): 102(ptr) Variable Function
- 1788(r15): 108(ptr) Variable Function
- 1792(r16): 106(ptr) Variable Function
- 1729: 6(float) Load 110(inF0)
- 1730: 6(float) Load 111(inF1)
- 1731: 6(float) FMul 1729 1730
- Store 1728(r00) 1731
- 1733: 24(fvec2) Load 112(inFV2)
- 1734: 6(float) Load 110(inF0)
- 1735: 24(fvec2) VectorTimesScalar 1733 1734
- Store 1732(r01) 1735
- 1737: 36(fvec3) Load 113(inFV3)
- 1738: 6(float) Load 110(inF0)
- 1739: 36(fvec3) VectorTimesScalar 1737 1738
- Store 1736(r02) 1739
- 1741: 6(float) Load 110(inF0)
- 1742: 24(fvec2) Load 112(inFV2)
- 1743: 24(fvec2) VectorTimesScalar 1742 1741
- Store 1740(r03) 1743
- 1745: 6(float) Load 110(inF0)
- 1746: 36(fvec3) Load 113(inFV3)
- 1747: 36(fvec3) VectorTimesScalar 1746 1745
- Store 1744(r04) 1747
- 1749: 24(fvec2) Load 112(inFV2)
- 1750: 24(fvec2) Load 112(inFV2)
- 1751: 6(float) Dot 1749 1750
- Store 1748(r05) 1751
- 1753: 36(fvec3) Load 113(inFV3)
- 1754: 36(fvec3) Load 113(inFV3)
- 1755: 6(float) Dot 1753 1754
- Store 1752(r06) 1755
- 1757: 24(fvec2) Load 112(inFV2)
- 1758: 101 Load 114(inFM2x3)
- 1759: 36(fvec3) VectorTimesMatrix 1757 1758
- Store 1756(r07) 1759
- 1761: 36(fvec3) Load 113(inFV3)
- 1762: 103 Load 115(inFM3x2)
- 1763: 24(fvec2) VectorTimesMatrix 1761 1762
- Store 1760(r08) 1763
- 1765: 101 Load 114(inFM2x3)
- 1766: 36(fvec3) Load 113(inFV3)
- 1767: 24(fvec2) MatrixTimesVector 1765 1766
- Store 1764(r09) 1767
- 1769: 103 Load 115(inFM3x2)
- 1770: 24(fvec2) Load 112(inFV2)
- 1771: 36(fvec3) MatrixTimesVector 1769 1770
- Store 1768(r10) 1771
- 1773: 101 Load 114(inFM2x3)
- 1774: 6(float) Load 110(inF0)
- 1775: 101 MatrixTimesScalar 1773 1774
- Store 1772(r11) 1775
- 1777: 103 Load 115(inFM3x2)
- 1778: 6(float) Load 110(inF0)
- 1779: 103 MatrixTimesScalar 1777 1778
- Store 1776(r12) 1779
- 1781: 101 Load 114(inFM2x3)
- 1782: 103 Load 115(inFM3x2)
- 1783: 48 MatrixTimesMatrix 1781 1782
- Store 1780(r13) 1783
- 1785: 101 Load 114(inFM2x3)
- 1786: 56 Load 116(inFM3x3)
- 1787: 101 MatrixTimesMatrix 1785 1786
- Store 1784(r14) 1787
- 1789: 101 Load 114(inFM2x3)
- 1790: 105 Load 117(inFM3x4)
- 1791: 107 MatrixTimesMatrix 1789 1790
- Store 1788(r15) 1791
- 1793: 103 Load 115(inFM3x2)
- 1794: 107 Load 118(inFM2x4)
- 1795: 105 MatrixTimesMatrix 1793 1794
- Store 1792(r16) 1795
+129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119
+ 120(inF0): 7(ptr) FunctionParameter
+ 121(inF1): 7(ptr) FunctionParameter
+ 122(inFV2): 25(ptr) FunctionParameter
+ 123(inFV3): 37(ptr) FunctionParameter
+ 124(inFM2x3): 112(ptr) FunctionParameter
+ 125(inFM3x2): 114(ptr) FunctionParameter
+ 126(inFM3x3): 69(ptr) FunctionParameter
+ 127(inFM3x4): 116(ptr) FunctionParameter
+ 128(inFM2x4): 118(ptr) FunctionParameter
+ 130: Label
+ 1730(r00): 7(ptr) Variable Function
+ 1734(r01): 25(ptr) Variable Function
+ 1738(r02): 37(ptr) Variable Function
+ 1742(r03): 25(ptr) Variable Function
+ 1746(r04): 37(ptr) Variable Function
+ 1750(r05): 7(ptr) Variable Function
+ 1754(r06): 7(ptr) Variable Function
+ 1758(r07): 37(ptr) Variable Function
+ 1762(r08): 25(ptr) Variable Function
+ 1766(r09): 25(ptr) Variable Function
+ 1770(r10): 37(ptr) Variable Function
+ 1774(r11): 112(ptr) Variable Function
+ 1778(r12): 114(ptr) Variable Function
+ 1782(r13): 61(ptr) Variable Function
+ 1786(r14): 112(ptr) Variable Function
+ 1790(r15): 118(ptr) Variable Function
+ 1794(r16): 116(ptr) Variable Function
+ 1731: 6(float) Load 121(inF1)
+ 1732: 6(float) Load 120(inF0)
+ 1733: 6(float) FMul 1731 1732
+ Store 1730(r00) 1733
+ 1735: 6(float) Load 120(inF0)
+ 1736: 24(fvec2) Load 122(inFV2)
+ 1737: 24(fvec2) VectorTimesScalar 1736 1735
+ Store 1734(r01) 1737
+ 1739: 6(float) Load 120(inF0)
+ 1740: 36(fvec3) Load 123(inFV3)
+ 1741: 36(fvec3) VectorTimesScalar 1740 1739
+ Store 1738(r02) 1741
+ 1743: 24(fvec2) Load 122(inFV2)
+ 1744: 6(float) Load 120(inF0)
+ 1745: 24(fvec2) VectorTimesScalar 1743 1744
+ Store 1742(r03) 1745
+ 1747: 36(fvec3) Load 123(inFV3)
+ 1748: 6(float) Load 120(inF0)
+ 1749: 36(fvec3) VectorTimesScalar 1747 1748
+ Store 1746(r04) 1749
+ 1751: 24(fvec2) Load 122(inFV2)
+ 1752: 24(fvec2) Load 122(inFV2)
+ 1753: 6(float) Dot 1751 1752
+ Store 1750(r05) 1753
+ 1755: 36(fvec3) Load 123(inFV3)
+ 1756: 36(fvec3) Load 123(inFV3)
+ 1757: 6(float) Dot 1755 1756
+ Store 1754(r06) 1757
+ 1759: 111 Load 124(inFM2x3)
+ 1760: 24(fvec2) Load 122(inFV2)
+ 1761: 36(fvec3) MatrixTimesVector 1759 1760
+ Store 1758(r07) 1761
+ 1763: 113 Load 125(inFM3x2)
+ 1764: 36(fvec3) Load 123(inFV3)
+ 1765: 24(fvec2) MatrixTimesVector 1763 1764
+ Store 1762(r08) 1765
+ 1767: 36(fvec3) Load 123(inFV3)
+ 1768: 111 Load 124(inFM2x3)
+ 1769: 24(fvec2) VectorTimesMatrix 1767 1768
+ Store 1766(r09) 1769
+ 1771: 24(fvec2) Load 122(inFV2)
+ 1772: 113 Load 125(inFM3x2)
+ 1773: 36(fvec3) VectorTimesMatrix 1771 1772
+ Store 1770(r10) 1773
+ 1775: 6(float) Load 120(inF0)
+ 1776: 111 Load 124(inFM2x3)
+ 1777: 111 MatrixTimesScalar 1776 1775
+ Store 1774(r11) 1777
+ 1779: 6(float) Load 120(inF0)
+ 1780: 113 Load 125(inFM3x2)
+ 1781: 113 MatrixTimesScalar 1780 1779
+ Store 1778(r12) 1781
+ 1783: 113 Load 125(inFM3x2)
+ 1784: 111 Load 124(inFM2x3)
+ 1785: 60 MatrixTimesMatrix 1783 1784
+ Store 1782(r13) 1785
+ 1787: 68 Load 126(inFM3x3)
+ 1788: 111 Load 124(inFM2x3)
+ 1789: 111 MatrixTimesMatrix 1787 1788
+ Store 1786(r14) 1789
+ 1791: 115 Load 127(inFM3x4)
+ 1792: 111 Load 124(inFM2x3)
+ 1793: 117 MatrixTimesMatrix 1791 1792
+ Store 1790(r15) 1793
+ 1795: 117 Load 128(inFM2x4)
+ 1796: 113 Load 125(inFM3x2)
+ 1797: 115 MatrixTimesMatrix 1795 1796
+ Store 1794(r16) 1797
Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index fe6f93c..eb3cee7 100644
--- a/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -2,11 +2,11 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
+0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
0:2 Function Parameters:
-0:2 'n_dot_l' (in float)
-0:2 'n_dot_h' (in float)
-0:2 'm' (in float)
+0:2 'n_dot_l' (layout(location=0 ) in float)
+0:2 'n_dot_h' (layout(location=1 ) in float)
+0:2 'm' (layout(location=2 ) in float)
0:? Sequence
0:3 Sequence
0:3 move second child to first child (temp 4-component vector of float)
@@ -15,15 +15,15 @@
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
-0:3 'n_dot_l' (in float)
+0:3 'n_dot_l' (layout(location=0 ) in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
-0:3 'n_dot_l' (in float)
-0:3 'n_dot_h' (in float)
+0:3 'n_dot_l' (layout(location=0 ) in float)
+0:3 'n_dot_h' (layout(location=1 ) in float)
0:3 Constant:
0:3 0.000000
0:3 true case
@@ -31,11 +31,14 @@
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
-0:3 'n_dot_h' (in float)
-0:3 'm' (in float)
+0:3 'n_dot_h' (layout(location=1 ) in float)
+0:3 'm' (layout(location=2 ) in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
+0:? 'n_dot_l' (layout(location=0 ) in float)
+0:? 'n_dot_h' (layout(location=1 ) in float)
+0:? 'm' (layout(location=2 ) in float)
Linked fragment stage:
@@ -44,11 +47,11 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
+0:2 Function Definition: PixelShaderFunction(f1;f1;f1; (global void)
0:2 Function Parameters:
-0:2 'n_dot_l' (in float)
-0:2 'n_dot_h' (in float)
-0:2 'm' (in float)
+0:2 'n_dot_l' (layout(location=0 ) in float)
+0:2 'n_dot_h' (layout(location=1 ) in float)
+0:2 'm' (layout(location=2 ) in float)
0:? Sequence
0:3 Sequence
0:3 move second child to first child (temp 4-component vector of float)
@@ -57,15 +60,15 @@
0:3 Constant:
0:3 1.000000
0:3 max (temp float)
-0:3 'n_dot_l' (in float)
+0:3 'n_dot_l' (layout(location=0 ) in float)
0:3 Constant:
0:3 0.000000
0:3 Test condition and select (temp float)
0:3 Condition
0:3 Compare Less Than (temp bool)
0:3 min (temp float)
-0:3 'n_dot_l' (in float)
-0:3 'n_dot_h' (in float)
+0:3 'n_dot_l' (layout(location=0 ) in float)
+0:3 'n_dot_h' (layout(location=1 ) in float)
0:3 Constant:
0:3 0.000000
0:3 true case
@@ -73,11 +76,14 @@
0:3 0.000000
0:3 false case
0:3 component-wise multiply (temp float)
-0:3 'n_dot_h' (in float)
-0:3 'm' (in float)
+0:3 'n_dot_h' (layout(location=1 ) in float)
+0:3 'm' (layout(location=2 ) in float)
0:3 Constant:
0:3 1.000000
0:? Linker Objects
+0:? 'n_dot_l' (layout(location=0 ) in float)
+0:? 'n_dot_h' (layout(location=1 ) in float)
+0:? 'm' (layout(location=2 ) in float)
// Module Version 10000
// Generated by (magic number): 80001
@@ -88,12 +94,14 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 12 19 28
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "r0"
Name 12 "n_dot_l"
Name 19 "n_dot_h"
Name 28 "m"
+ Decorate 12(n_dot_l) Location 0
+ Decorate 19(n_dot_h) Location 1
+ Decorate 28(m) Location 2
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 043fa82..0100864 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -1,508 +1,72 @@
hlsl.intrinsics.negative.comp
-ERROR: 0:7: 'asdouble' : no matching overloaded function found
-ERROR: 0:8: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:9: 'clip' : no matching overloaded function found
-ERROR: 0:10: 'countbits' : no matching overloaded function found
-ERROR: 0:11: 'cross' : no matching overloaded function found
-ERROR: 0:12: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:13: 'ddx' : no matching overloaded function found
-ERROR: 0:14: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:15: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:16: 'ddy' : no matching overloaded function found
-ERROR: 0:17: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:18: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:19: 'determinant' : no matching overloaded function found
-ERROR: 0:20: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:21: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:22: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:23: 'f16tof32' : no matching overloaded function found
-ERROR: 0:24: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:25: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:27: 'fwidth' : no matching overloaded function found
-ERROR: 0:28: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:29: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:30: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:31: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:32: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:33: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:34: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:35: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:36: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:37: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:38: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:39: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:40: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:41: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:42: 'length' : no matching overloaded function found
-ERROR: 0:43: 'msad4' : no matching overloaded function found
-ERROR: 0:44: 'normalize' : no matching overloaded function found
-ERROR: 0:45: 'reflect' : no matching overloaded function found
-ERROR: 0:46: 'refract' : no matching overloaded function found
-ERROR: 0:47: 'refract' : no matching overloaded function found
-ERROR: 0:48: 'reversebits' : no matching overloaded function found
-ERROR: 0:49: 'transpose' : no matching overloaded function found
-ERROR: 0:60: 'GetRenderTargetSamplePosition' : no matching overloaded function found
-ERROR: 0:69: 'asdouble' : no matching overloaded function found
-ERROR: 0:70: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:71: 'countbits' : no matching overloaded function found
-ERROR: 0:72: 'cross' : no matching overloaded function found
-ERROR: 0:73: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:74: 'ddx' : no matching overloaded function found
-ERROR: 0:75: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:76: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:77: 'ddy' : no matching overloaded function found
-ERROR: 0:78: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:79: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:80: 'determinant' : no matching overloaded function found
-ERROR: 0:81: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:82: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:83: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:84: 'f16tof32' : no matching overloaded function found
-ERROR: 0:85: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:86: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:88: 'fwidth' : no matching overloaded function found
-ERROR: 0:89: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:90: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:91: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:92: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:93: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:94: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:95: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:96: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:97: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:98: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:99: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:100: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:101: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:102: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:103: 'noise' : no matching overloaded function found
-ERROR: 0:104: 'reversebits' : no matching overloaded function found
-ERROR: 0:105: 'transpose' : no matching overloaded function found
-ERROR: 0:116: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:117: 'countbits' : no matching overloaded function found
-ERROR: 0:118: 'ddx' : no matching overloaded function found
-ERROR: 0:119: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:120: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:121: 'ddy' : no matching overloaded function found
-ERROR: 0:122: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:123: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:124: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:125: 'determinant' : no matching overloaded function found
-ERROR: 0:126: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:127: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:128: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:129: 'f16tof32' : no matching overloaded function found
-ERROR: 0:130: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:131: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:133: 'fwidth' : no matching overloaded function found
-ERROR: 0:134: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:135: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:136: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:137: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:138: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:139: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:140: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:141: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:142: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:143: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:144: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:145: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:146: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:147: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:148: 'noise' : no matching overloaded function found
-ERROR: 0:149: 'reversebits' : no matching overloaded function found
-ERROR: 0:150: 'transpose' : no matching overloaded function found
-ERROR: 0:161: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:162: 'countbits' : no matching overloaded function found
-ERROR: 0:163: 'cross' : no matching overloaded function found
-ERROR: 0:164: 'determinant' : no matching overloaded function found
-ERROR: 0:165: 'ddx' : no matching overloaded function found
-ERROR: 0:166: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:167: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:168: 'ddy' : no matching overloaded function found
-ERROR: 0:169: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:170: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:171: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:172: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:173: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:174: 'f16tof32' : no matching overloaded function found
-ERROR: 0:175: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:176: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:178: 'fwidth' : no matching overloaded function found
-ERROR: 0:179: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:180: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:181: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:182: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:183: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:184: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:185: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:186: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:187: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:188: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:189: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:190: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:191: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:192: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:193: 'noise' : no matching overloaded function found
-ERROR: 0:194: 'reversebits' : no matching overloaded function found
-ERROR: 0:195: 'transpose' : no matching overloaded function found
-ERROR: 147 compilation errors. No code generated.
-
-
Shader version: 450
local_size = (1, 1, 1)
-ERROR: node is still EOpNull!
-0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
+0:? Sequence
+0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
-0:7 Constant:
-0:7 0.000000
-0:8 Constant:
-0:8 0.000000
-0:9 Constant:
-0:9 0.000000
-0:10 Constant:
-0:10 0.000000
-0:11 Constant:
-0:11 0.000000
-0:12 Constant:
-0:12 0.000000
-0:13 Constant:
-0:13 0.000000
-0:14 Constant:
-0:14 0.000000
-0:15 Constant:
-0:15 0.000000
-0:16 Constant:
-0:16 0.000000
-0:17 Constant:
-0:17 0.000000
-0:18 Constant:
-0:18 0.000000
-0:19 Constant:
-0:19 0.000000
-0:20 Constant:
-0:20 0.000000
-0:21 Constant:
-0:21 0.000000
-0:22 Constant:
-0:22 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:27 Constant:
-0:27 0.000000
-0:28 Constant:
-0:28 0.000000
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
-0:31 Constant:
-0:31 0.000000
-0:32 Constant:
-0:32 0.000000
-0:33 Constant:
-0:33 0.000000
-0:34 Constant:
-0:34 0.000000
-0:35 Constant:
-0:35 0.000000
-0:36 Constant:
-0:36 0.000000
-0:37 Constant:
-0:37 0.000000
-0:38 Constant:
-0:38 0.000000
-0:39 Constant:
-0:39 0.000000
-0:40 Constant:
-0:40 0.000000
-0:41 Constant:
-0:41 0.000000
-0:42 Constant:
-0:42 0.000000
-0:43 Constant:
-0:43 0.000000
-0:44 Constant:
-0:44 0.000000
-0:45 Constant:
-0:45 0.000000
-0:46 Constant:
-0:46 0.000000
-0:47 Constant:
-0:47 0.000000
-0:48 Constant:
-0:48 0.000000
-0:49 Constant:
-0:49 0.000000
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
-0:65 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
0:57 'inF2' (in 1-component vector of float)
0:57 'inI0' (in 1-component vector of int)
0:? Sequence
-0:60 Constant:
-0:60 0.000000
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
-0:112 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
0:66 'inF2' (in 2-component vector of float)
0:66 'inI0' (in 2-component vector of int)
0:? Sequence
-0:69 Constant:
-0:69 0.000000
-0:70 Constant:
-0:70 0.000000
-0:71 Constant:
-0:71 0.000000
-0:72 Constant:
-0:72 0.000000
-0:73 Constant:
-0:73 0.000000
-0:74 Constant:
-0:74 0.000000
-0:75 Constant:
-0:75 0.000000
-0:76 Constant:
-0:76 0.000000
-0:77 Constant:
-0:77 0.000000
-0:78 Constant:
-0:78 0.000000
-0:79 Constant:
-0:79 0.000000
-0:80 Constant:
-0:80 0.000000
-0:81 Constant:
-0:81 0.000000
-0:82 Constant:
-0:82 0.000000
-0:83 Constant:
-0:83 0.000000
-0:84 Constant:
-0:84 0.000000
-0:85 Constant:
-0:85 0.000000
-0:86 Constant:
-0:86 0.000000
-0:88 Constant:
-0:88 0.000000
-0:89 Constant:
-0:89 0.000000
-0:90 Constant:
-0:90 0.000000
-0:91 Constant:
-0:91 0.000000
-0:92 Constant:
-0:92 0.000000
-0:93 Constant:
-0:93 0.000000
-0:94 Constant:
-0:94 0.000000
-0:95 Constant:
-0:95 0.000000
-0:96 Constant:
-0:96 0.000000
-0:97 Constant:
-0:97 0.000000
-0:98 Constant:
-0:98 0.000000
-0:99 Constant:
-0:99 0.000000
-0:100 Constant:
-0:100 0.000000
-0:101 Constant:
-0:101 0.000000
-0:102 Constant:
-0:102 0.000000
-0:103 Constant:
-0:103 0.000000
-0:104 Constant:
-0:104 0.000000
-0:105 Constant:
-0:105 0.000000
0:109 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:157 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
0:113 'inF2' (in 3-component vector of float)
0:113 'inI0' (in 3-component vector of int)
0:? Sequence
-0:116 Constant:
-0:116 0.000000
-0:117 Constant:
-0:117 0.000000
-0:118 Constant:
-0:118 0.000000
-0:119 Constant:
-0:119 0.000000
-0:120 Constant:
-0:120 0.000000
-0:121 Constant:
-0:121 0.000000
-0:122 Constant:
-0:122 0.000000
-0:123 Constant:
-0:123 0.000000
-0:124 Constant:
-0:124 0.000000
-0:125 Constant:
-0:125 0.000000
-0:126 Constant:
-0:126 0.000000
-0:127 Constant:
-0:127 0.000000
-0:128 Constant:
-0:128 0.000000
-0:129 Constant:
-0:129 0.000000
-0:130 Constant:
-0:130 0.000000
-0:131 Constant:
-0:131 0.000000
-0:133 Constant:
-0:133 0.000000
-0:134 Constant:
-0:134 0.000000
-0:135 Constant:
-0:135 0.000000
-0:136 Constant:
-0:136 0.000000
-0:137 Constant:
-0:137 0.000000
-0:138 Constant:
-0:138 0.000000
-0:139 Constant:
-0:139 0.000000
-0:140 Constant:
-0:140 0.000000
-0:141 Constant:
-0:141 0.000000
-0:142 Constant:
-0:142 0.000000
-0:143 Constant:
-0:143 0.000000
-0:144 Constant:
-0:144 0.000000
-0:145 Constant:
-0:145 0.000000
-0:146 Constant:
-0:146 0.000000
-0:147 Constant:
-0:147 0.000000
-0:148 Constant:
-0:148 0.000000
-0:149 Constant:
-0:149 0.000000
-0:150 Constant:
-0:150 0.000000
0:154 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:158 Function Parameters:
-0:158 'inF0' (in 4-component vector of float)
-0:158 'inF1' (in 4-component vector of float)
-0:158 'inF2' (in 4-component vector of float)
-0:158 'inI0' (in 4-component vector of int)
+0:158 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:158 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:158 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:158 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
-0:161 Constant:
-0:161 0.000000
-0:162 Constant:
-0:162 0.000000
-0:163 Constant:
-0:163 0.000000
-0:164 Constant:
-0:164 0.000000
-0:165 Constant:
-0:165 0.000000
-0:166 Constant:
-0:166 0.000000
-0:167 Constant:
-0:167 0.000000
-0:168 Constant:
-0:168 0.000000
-0:169 Constant:
-0:169 0.000000
-0:170 Constant:
-0:170 0.000000
-0:171 Constant:
-0:171 0.000000
-0:172 Constant:
-0:172 0.000000
-0:173 Constant:
-0:173 0.000000
-0:174 Constant:
-0:174 0.000000
-0:175 Constant:
-0:175 0.000000
-0:176 Constant:
-0:176 0.000000
-0:178 Constant:
-0:178 0.000000
-0:179 Constant:
-0:179 0.000000
-0:180 Constant:
-0:180 0.000000
-0:181 Constant:
-0:181 0.000000
-0:182 Constant:
-0:182 0.000000
-0:183 Constant:
-0:183 0.000000
-0:184 Constant:
-0:184 0.000000
-0:185 Constant:
-0:185 0.000000
-0:186 Constant:
-0:186 0.000000
-0:187 Constant:
-0:187 0.000000
-0:188 Constant:
-0:188 0.000000
-0:189 Constant:
-0:189 0.000000
-0:190 Constant:
-0:190 0.000000
-0:191 Constant:
-0:191 0.000000
-0:192 Constant:
-0:192 0.000000
-0:193 Constant:
-0:193 0.000000
-0:194 Constant:
-0:194 0.000000
-0:195 Constant:
-0:195 0.000000
-0:199 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:199 Sequence
+0:199 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:199 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
Linked compute stage:
@@ -510,357 +74,182 @@
Shader version: 450
local_size = (1, 1, 1)
-ERROR: node is still EOpNull!
-0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
+0:? Sequence
+0:2 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
-0:7 Constant:
-0:7 0.000000
-0:8 Constant:
-0:8 0.000000
-0:9 Constant:
-0:9 0.000000
-0:10 Constant:
-0:10 0.000000
-0:11 Constant:
-0:11 0.000000
-0:12 Constant:
-0:12 0.000000
-0:13 Constant:
-0:13 0.000000
-0:14 Constant:
-0:14 0.000000
-0:15 Constant:
-0:15 0.000000
-0:16 Constant:
-0:16 0.000000
-0:17 Constant:
-0:17 0.000000
-0:18 Constant:
-0:18 0.000000
-0:19 Constant:
-0:19 0.000000
-0:20 Constant:
-0:20 0.000000
-0:21 Constant:
-0:21 0.000000
-0:22 Constant:
-0:22 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:27 Constant:
-0:27 0.000000
-0:28 Constant:
-0:28 0.000000
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
-0:31 Constant:
-0:31 0.000000
-0:32 Constant:
-0:32 0.000000
-0:33 Constant:
-0:33 0.000000
-0:34 Constant:
-0:34 0.000000
-0:35 Constant:
-0:35 0.000000
-0:36 Constant:
-0:36 0.000000
-0:37 Constant:
-0:37 0.000000
-0:38 Constant:
-0:38 0.000000
-0:39 Constant:
-0:39 0.000000
-0:40 Constant:
-0:40 0.000000
-0:41 Constant:
-0:41 0.000000
-0:42 Constant:
-0:42 0.000000
-0:43 Constant:
-0:43 0.000000
-0:44 Constant:
-0:44 0.000000
-0:45 Constant:
-0:45 0.000000
-0:46 Constant:
-0:46 0.000000
-0:47 Constant:
-0:47 0.000000
-0:48 Constant:
-0:48 0.000000
-0:49 Constant:
-0:49 0.000000
0:53 Branch: Return with expression
0:53 Constant:
0:53 0.000000
-0:65 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:57 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:57 Function Parameters:
0:57 'inF0' (in 1-component vector of float)
0:57 'inF1' (in 1-component vector of float)
0:57 'inF2' (in 1-component vector of float)
0:57 'inI0' (in 1-component vector of int)
0:? Sequence
-0:60 Constant:
-0:60 0.000000
0:62 Branch: Return with expression
0:62 Constant:
0:62 0.000000
-0:112 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:66 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:66 Function Parameters:
0:66 'inF0' (in 2-component vector of float)
0:66 'inF1' (in 2-component vector of float)
0:66 'inF2' (in 2-component vector of float)
0:66 'inI0' (in 2-component vector of int)
0:? Sequence
-0:69 Constant:
-0:69 0.000000
-0:70 Constant:
-0:70 0.000000
-0:71 Constant:
-0:71 0.000000
-0:72 Constant:
-0:72 0.000000
-0:73 Constant:
-0:73 0.000000
-0:74 Constant:
-0:74 0.000000
-0:75 Constant:
-0:75 0.000000
-0:76 Constant:
-0:76 0.000000
-0:77 Constant:
-0:77 0.000000
-0:78 Constant:
-0:78 0.000000
-0:79 Constant:
-0:79 0.000000
-0:80 Constant:
-0:80 0.000000
-0:81 Constant:
-0:81 0.000000
-0:82 Constant:
-0:82 0.000000
-0:83 Constant:
-0:83 0.000000
-0:84 Constant:
-0:84 0.000000
-0:85 Constant:
-0:85 0.000000
-0:86 Constant:
-0:86 0.000000
-0:88 Constant:
-0:88 0.000000
-0:89 Constant:
-0:89 0.000000
-0:90 Constant:
-0:90 0.000000
-0:91 Constant:
-0:91 0.000000
-0:92 Constant:
-0:92 0.000000
-0:93 Constant:
-0:93 0.000000
-0:94 Constant:
-0:94 0.000000
-0:95 Constant:
-0:95 0.000000
-0:96 Constant:
-0:96 0.000000
-0:97 Constant:
-0:97 0.000000
-0:98 Constant:
-0:98 0.000000
-0:99 Constant:
-0:99 0.000000
-0:100 Constant:
-0:100 0.000000
-0:101 Constant:
-0:101 0.000000
-0:102 Constant:
-0:102 0.000000
-0:103 Constant:
-0:103 0.000000
-0:104 Constant:
-0:104 0.000000
-0:105 Constant:
-0:105 0.000000
0:109 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:157 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:113 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:113 Function Parameters:
0:113 'inF0' (in 3-component vector of float)
0:113 'inF1' (in 3-component vector of float)
0:113 'inF2' (in 3-component vector of float)
0:113 'inI0' (in 3-component vector of int)
0:? Sequence
-0:116 Constant:
-0:116 0.000000
-0:117 Constant:
-0:117 0.000000
-0:118 Constant:
-0:118 0.000000
-0:119 Constant:
-0:119 0.000000
-0:120 Constant:
-0:120 0.000000
-0:121 Constant:
-0:121 0.000000
-0:122 Constant:
-0:122 0.000000
-0:123 Constant:
-0:123 0.000000
-0:124 Constant:
-0:124 0.000000
-0:125 Constant:
-0:125 0.000000
-0:126 Constant:
-0:126 0.000000
-0:127 Constant:
-0:127 0.000000
-0:128 Constant:
-0:128 0.000000
-0:129 Constant:
-0:129 0.000000
-0:130 Constant:
-0:130 0.000000
-0:131 Constant:
-0:131 0.000000
-0:133 Constant:
-0:133 0.000000
-0:134 Constant:
-0:134 0.000000
-0:135 Constant:
-0:135 0.000000
-0:136 Constant:
-0:136 0.000000
-0:137 Constant:
-0:137 0.000000
-0:138 Constant:
-0:138 0.000000
-0:139 Constant:
-0:139 0.000000
-0:140 Constant:
-0:140 0.000000
-0:141 Constant:
-0:141 0.000000
-0:142 Constant:
-0:142 0.000000
-0:143 Constant:
-0:143 0.000000
-0:144 Constant:
-0:144 0.000000
-0:145 Constant:
-0:145 0.000000
-0:146 Constant:
-0:146 0.000000
-0:147 Constant:
-0:147 0.000000
-0:148 Constant:
-0:148 0.000000
-0:149 Constant:
-0:149 0.000000
-0:150 Constant:
-0:150 0.000000
0:154 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:202 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:158 Function Definition: ComputeShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:158 Function Parameters:
-0:158 'inF0' (in 4-component vector of float)
-0:158 'inF1' (in 4-component vector of float)
-0:158 'inF2' (in 4-component vector of float)
-0:158 'inI0' (in 4-component vector of int)
+0:158 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:158 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:158 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:158 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
-0:161 Constant:
-0:161 0.000000
-0:162 Constant:
-0:162 0.000000
-0:163 Constant:
-0:163 0.000000
-0:164 Constant:
-0:164 0.000000
-0:165 Constant:
-0:165 0.000000
-0:166 Constant:
-0:166 0.000000
-0:167 Constant:
-0:167 0.000000
-0:168 Constant:
-0:168 0.000000
-0:169 Constant:
-0:169 0.000000
-0:170 Constant:
-0:170 0.000000
-0:171 Constant:
-0:171 0.000000
-0:172 Constant:
-0:172 0.000000
-0:173 Constant:
-0:173 0.000000
-0:174 Constant:
-0:174 0.000000
-0:175 Constant:
-0:175 0.000000
-0:176 Constant:
-0:176 0.000000
-0:178 Constant:
-0:178 0.000000
-0:179 Constant:
-0:179 0.000000
-0:180 Constant:
-0:180 0.000000
-0:181 Constant:
-0:181 0.000000
-0:182 Constant:
-0:182 0.000000
-0:183 Constant:
-0:183 0.000000
-0:184 Constant:
-0:184 0.000000
-0:185 Constant:
-0:185 0.000000
-0:186 Constant:
-0:186 0.000000
-0:187 Constant:
-0:187 0.000000
-0:188 Constant:
-0:188 0.000000
-0:189 Constant:
-0:189 0.000000
-0:190 Constant:
-0:190 0.000000
-0:191 Constant:
-0:191 0.000000
-0:192 Constant:
-0:192 0.000000
-0:193 Constant:
-0:193 0.000000
-0:194 Constant:
-0:194 0.000000
-0:195 Constant:
-0:195 0.000000
-0:199 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
+0:199 Sequence
+0:199 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:199 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
-SPIR-V is not generated for failed compile or link
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 72
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "ComputeShaderFunction" 61 66 67 68 71
+ ExecutionMode 4 LocalSize 1 1 1
+ Name 4 "ComputeShaderFunction"
+ Name 15 "ComputeShaderFunctionS(f1;f1;f1;i1;"
+ Name 11 "inF0"
+ Name 12 "inF1"
+ Name 13 "inF2"
+ Name 14 "inI0"
+ Name 21 "ComputeShaderFunction1(vf1;vf1;vf1;vi1;"
+ Name 17 "inF0"
+ Name 18 "inF1"
+ Name 19 "inF2"
+ Name 20 "inI0"
+ Name 32 "ComputeShaderFunction2(vf2;vf2;vf2;vi2;"
+ Name 28 "inF0"
+ Name 29 "inF1"
+ Name 30 "inF2"
+ Name 31 "inI0"
+ Name 43 "ComputeShaderFunction3(vf3;vf3;vf3;vi3;"
+ Name 39 "inF0"
+ Name 40 "inF1"
+ Name 41 "inF2"
+ Name 42 "inI0"
+ Name 61 "@entryPointOutput"
+ Name 66 "inF0"
+ Name 67 "inF1"
+ Name 68 "inF2"
+ Name 71 "inI0"
+ Decorate 61(@entryPointOutput) Location 0
+ Decorate 66(inF0) Location 0
+ Decorate 67(inF1) Location 1
+ Decorate 68(inF2) Location 2
+ Decorate 71(inI0) Location 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeInt 32 1
+ 9: TypePointer Function 8(int)
+ 10: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr)
+ 23: TypeVector 6(float) 2
+ 24: TypePointer Function 23(fvec2)
+ 25: TypeVector 8(int) 2
+ 26: TypePointer Function 25(ivec2)
+ 27: TypeFunction 23(fvec2) 24(ptr) 24(ptr) 24(ptr) 26(ptr)
+ 34: TypeVector 6(float) 3
+ 35: TypePointer Function 34(fvec3)
+ 36: TypeVector 8(int) 3
+ 37: TypePointer Function 36(ivec3)
+ 38: TypeFunction 34(fvec3) 35(ptr) 35(ptr) 35(ptr) 37(ptr)
+ 45: 6(float) Constant 0
+ 50: 6(float) Constant 1065353216
+ 51: 6(float) Constant 1073741824
+ 52: 23(fvec2) ConstantComposite 50 51
+ 55: 6(float) Constant 1077936128
+ 56: 34(fvec3) ConstantComposite 50 51 55
+ 59: TypeVector 6(float) 4
+ 60: TypePointer Output 59(fvec4)
+61(@entryPointOutput): 60(ptr) Variable Output
+ 62: 6(float) Constant 1082130432
+ 63: 59(fvec4) ConstantComposite 50 51 55 62
+ 65: TypePointer Input 59(fvec4)
+ 66(inF0): 65(ptr) Variable Input
+ 67(inF1): 65(ptr) Variable Input
+ 68(inF2): 65(ptr) Variable Input
+ 69: TypeVector 8(int) 4
+ 70: TypePointer Input 69(ivec4)
+ 71(inI0): 70(ptr) Variable Input
+4(ComputeShaderFunction): 2 Function None 3
+ 5: Label
+ Store 61(@entryPointOutput) 63
+ Return
+ FunctionEnd
+15(ComputeShaderFunctionS(f1;f1;f1;i1;): 6(float) Function None 10
+ 11(inF0): 7(ptr) FunctionParameter
+ 12(inF1): 7(ptr) FunctionParameter
+ 13(inF2): 7(ptr) FunctionParameter
+ 14(inI0): 9(ptr) FunctionParameter
+ 16: Label
+ ReturnValue 45
+ FunctionEnd
+21(ComputeShaderFunction1(vf1;vf1;vf1;vi1;): 6(float) Function None 10
+ 17(inF0): 7(ptr) FunctionParameter
+ 18(inF1): 7(ptr) FunctionParameter
+ 19(inF2): 7(ptr) FunctionParameter
+ 20(inI0): 9(ptr) FunctionParameter
+ 22: Label
+ ReturnValue 45
+ FunctionEnd
+32(ComputeShaderFunction2(vf2;vf2;vf2;vi2;): 23(fvec2) Function None 27
+ 28(inF0): 24(ptr) FunctionParameter
+ 29(inF1): 24(ptr) FunctionParameter
+ 30(inF2): 24(ptr) FunctionParameter
+ 31(inI0): 26(ptr) FunctionParameter
+ 33: Label
+ ReturnValue 52
+ FunctionEnd
+43(ComputeShaderFunction3(vf3;vf3;vf3;vi3;): 34(fvec3) Function None 38
+ 39(inF0): 35(ptr) FunctionParameter
+ 40(inF1): 35(ptr) FunctionParameter
+ 41(inF2): 35(ptr) FunctionParameter
+ 42(inI0): 37(ptr) FunctionParameter
+ 44: Label
+ ReturnValue 56
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 829b699..2244e8b 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -1,50 +1,24 @@
hlsl.intrinsics.negative.frag
-ERROR: 0:5: 'asdouble' : no matching overloaded function found
-ERROR: 0:6: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:7: 'countbits' : no matching overloaded function found
-ERROR: 0:8: 'cross' : no matching overloaded function found
-ERROR: 0:9: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:10: 'determinant' : no matching overloaded function found
-ERROR: 0:12: 'f16tof32' : no matching overloaded function found
-ERROR: 0:13: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:14: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:23: 'length' : no matching overloaded function found
-ERROR: 0:24: 'msad4' : no matching overloaded function found
-ERROR: 0:25: 'normalize' : no matching overloaded function found
-ERROR: 0:26: 'reflect' : no matching overloaded function found
-ERROR: 0:27: 'refract' : no matching overloaded function found
+ERROR: 0:12: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:28: 'refract' : no matching overloaded function found
-ERROR: 0:29: 'reversebits' : no matching overloaded function found
ERROR: 0:30: 'transpose' : no matching overloaded function found
ERROR: 0:39: 'GetRenderTargetSamplePosition' : no matching overloaded function found
-ERROR: 0:46: 'asdouble' : no matching overloaded function found
+ERROR: 0:46: 'asdouble' : double2 conversion not implemented
ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:48: 'countbits' : no matching overloaded function found
ERROR: 0:49: 'cross' : no matching overloaded function found
ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:51: 'determinant' : no matching overloaded function found
-ERROR: 0:52: 'f16tof32' : no matching overloaded function found
-ERROR: 0:53: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:54: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:56: 'reversebits' : no matching overloaded function found
+ERROR: 0:52: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:57: 'transpose' : no matching overloaded function found
ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:65: 'countbits' : no matching overloaded function found
ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:67: 'determinant' : no matching overloaded function found
-ERROR: 0:68: 'f16tof32' : no matching overloaded function found
-ERROR: 0:69: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:70: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:72: 'reversebits' : no matching overloaded function found
+ERROR: 0:68: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:73: 'transpose' : no matching overloaded function found
ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:82: 'countbits' : no matching overloaded function found
-ERROR: 0:83: 'cross' : no matching overloaded function found
ERROR: 0:84: 'determinant' : no matching overloaded function found
-ERROR: 0:85: 'f16tof32' : no matching overloaded function found
-ERROR: 0:86: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:87: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:89: 'reversebits' : no matching overloaded function found
+ERROR: 0:85: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:90: 'transpose' : no matching overloaded function found
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
@@ -85,57 +59,90 @@
ERROR: 0:133: 'reflect' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : no matching overloaded function found
-ERROR: 86 compilation errors. No code generated.
+ERROR: 60 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:35 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
-0:5 Constant:
-0:5 0.000000
-0:6 Constant:
-0:6 0.000000
-0:7 Constant:
-0:7 0.000000
-0:8 Constant:
-0:8 0.000000
-0:9 Constant:
-0:9 0.000000
+0:5 uint64BitsToDouble (temp double)
+0:5 Construct uvec2 (temp 2-component vector of uint)
+0:5 Convert float to uint (temp uint)
+0:5 'inF0' (in float)
+0:5 Convert float to uint (temp uint)
+0:5 'inF1' (in float)
+0:6 Function Call: CheckAccessFullyMapped(u1; (global bool)
+0:6 Constant:
+0:6 3 (const uint)
+0:7 bitCount (global uint)
+0:7 Convert float to uint (temp uint)
+0:7 'inF0' (in float)
+0:8 cross-product (global 3-component vector of float)
+0:8 Construct vec3 (in 3-component vector of float)
+0:8 'inF0' (in float)
+0:8 Construct vec3 (in 3-component vector of float)
+0:8 'inF1' (in float)
+0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int)
+0:9 Construct vec4 (in 4-component vector of float)
+0:9 'inF0' (in float)
0:10 Constant:
0:10 0.000000
-0:12 Constant:
-0:12 0.000000
-0:13 Constant:
-0:13 0.000000
-0:14 Constant:
-0:14 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:26 Constant:
-0:26 0.000000
-0:27 Constant:
-0:27 0.000000
+0:12 ERROR: Bad unary op
+ (global float)
+0:12 Convert float to uint (temp uint)
+0:12 'inF0' (in float)
+0:13 findMSB (global uint)
+0:13 Convert float to uint (temp uint)
+0:13 'inF0' (in float)
+0:14 findLSB (global uint)
+0:14 Convert float to uint (temp uint)
+0:14 'inF0' (in float)
+0:23 length (global float)
+0:23 Construct vec2 (in 2-component vector of float)
+0:23 'inF0' (in float)
+0:24 Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint)
+0:24 Convert float to uint (temp uint)
+0:24 'inF0' (in float)
+0:24 Constant:
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 Constant:
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:25 normalize (global 2-component vector of float)
+0:25 Construct vec2 (in 2-component vector of float)
+0:25 'inF0' (in float)
+0:26 reflect (global 2-component vector of float)
+0:26 Construct vec2 (in 2-component vector of float)
+0:26 'inF0' (in float)
+0:26 Construct vec2 (in 2-component vector of float)
+0:26 'inF1' (in float)
+0:27 refract (global 2-component vector of float)
+0:27 Construct vec2 (in 2-component vector of float)
+0:27 'inF0' (in float)
+0:27 Construct vec2 (in 2-component vector of float)
+0:27 'inF1' (in float)
+0:27 'inF2' (in float)
0:28 Constant:
0:28 0.000000
-0:29 Constant:
-0:29 0.000000
+0:29 bitFieldReverse (global uint)
+0:29 Convert float to uint (temp uint)
+0:29 'inF0' (in float)
0:30 Constant:
0:30 0.000000
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
-0:44 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
@@ -147,40 +154,50 @@
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
-0:62 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
0:45 'inF2' (in 2-component vector of float)
0:45 'inI0' (in 2-component vector of int)
0:? Sequence
-0:46 Constant:
-0:46 0.000000
+0:46 ERROR: Bad aggregation op
+ (global 2-component vector of double)
+0:46 Convert float to uint (temp 2-component vector of uint)
+0:46 'inF0' (in 2-component vector of float)
+0:46 Convert float to uint (temp 2-component vector of uint)
+0:46 'inF1' (in 2-component vector of float)
0:47 Constant:
0:47 0.000000
-0:48 Constant:
-0:48 0.000000
+0:48 bitCount (global 2-component vector of uint)
+0:48 Convert float to uint (temp 2-component vector of uint)
+0:48 'inF0' (in 2-component vector of float)
0:49 Constant:
0:49 0.000000
0:50 Constant:
0:50 0.000000
0:51 Constant:
0:51 0.000000
-0:52 Constant:
-0:52 0.000000
-0:53 Constant:
-0:53 0.000000
-0:54 Constant:
-0:54 0.000000
-0:56 Constant:
-0:56 0.000000
+0:52 ERROR: Bad unary op
+ (global 2-component vector of float)
+0:52 Convert float to uint (temp 2-component vector of uint)
+0:52 'inF0' (in 2-component vector of float)
+0:53 findMSB (global 2-component vector of uint)
+0:53 Convert float to uint (temp 2-component vector of uint)
+0:53 'inF0' (in 2-component vector of float)
+0:54 findLSB (global 2-component vector of uint)
+0:54 Convert float to uint (temp 2-component vector of uint)
+0:54 'inF0' (in 2-component vector of float)
+0:56 bitFieldReverse (global 2-component vector of uint)
+0:56 Convert float to uint (temp 2-component vector of uint)
+0:56 'inF0' (in 2-component vector of float)
0:57 Constant:
0:57 0.000000
0:59 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:79 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
@@ -189,20 +206,26 @@
0:? Sequence
0:64 Constant:
0:64 0.000000
-0:65 Constant:
-0:65 0.000000
+0:65 bitCount (global 3-component vector of uint)
+0:65 Convert float to uint (temp 3-component vector of uint)
+0:65 'inF0' (in 3-component vector of float)
0:66 Constant:
0:66 0.000000
0:67 Constant:
0:67 0.000000
-0:68 Constant:
-0:68 0.000000
-0:69 Constant:
-0:69 0.000000
-0:70 Constant:
-0:70 0.000000
-0:72 Constant:
-0:72 0.000000
+0:68 ERROR: Bad unary op
+ (global 3-component vector of float)
+0:68 Convert float to uint (temp 3-component vector of uint)
+0:68 'inF0' (in 3-component vector of float)
+0:69 findMSB (global 3-component vector of uint)
+0:69 Convert float to uint (temp 3-component vector of uint)
+0:69 'inF0' (in 3-component vector of float)
+0:70 findLSB (global 3-component vector of uint)
+0:70 Convert float to uint (temp 3-component vector of uint)
+0:70 'inF0' (in 3-component vector of float)
+0:72 bitFieldReverse (global 3-component vector of uint)
+0:72 Convert float to uint (temp 3-component vector of uint)
+0:72 'inF0' (in 3-component vector of float)
0:73 Constant:
0:73 0.000000
0:76 Branch: Return with expression
@@ -210,38 +233,50 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:114 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:80 Function Parameters:
-0:80 'inF0' (in 4-component vector of float)
-0:80 'inF1' (in 4-component vector of float)
-0:80 'inF2' (in 4-component vector of float)
-0:80 'inI0' (in 4-component vector of int)
+0:80 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:80 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:80 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:80 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
0:81 Constant:
0:81 0.000000
-0:82 Constant:
-0:82 0.000000
-0:83 Constant:
-0:83 0.000000
+0:82 bitCount (global 4-component vector of uint)
+0:82 Convert float to uint (temp 4-component vector of uint)
+0:82 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:83 cross-product (global 3-component vector of float)
+0:83 Construct vec3 (in 3-component vector of float)
+0:83 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:83 Construct vec3 (in 3-component vector of float)
+0:83 'inF1' (layout(location=1 ) in 4-component vector of float)
0:84 Constant:
0:84 0.000000
-0:85 Constant:
-0:85 0.000000
-0:86 Constant:
-0:86 0.000000
-0:87 Constant:
-0:87 0.000000
-0:89 Constant:
-0:89 0.000000
+0:85 ERROR: Bad unary op
+ (global 4-component vector of float)
+0:85 Convert float to uint (temp 4-component vector of uint)
+0:85 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:86 findMSB (global 4-component vector of uint)
+0:86 Convert float to uint (temp 4-component vector of uint)
+0:86 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:87 findLSB (global 4-component vector of uint)
+0:87 Convert float to uint (temp 4-component vector of uint)
+0:87 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:89 bitFieldReverse (global 4-component vector of uint)
+0:89 Convert float to uint (temp 4-component vector of uint)
+0:89 'inF0' (layout(location=0 ) in 4-component vector of float)
0:90 Constant:
0:90 0.000000
-0:92 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
-0:122 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:92 Sequence
+0:92 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:92 Branch: Return
+0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:115 Function Parameters:
0:115 'inF0' (in 2X2 matrix of float)
0:115 'inF1' (in 2X2 matrix of float)
@@ -279,7 +314,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:130 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:123 Function Parameters:
0:123 'inF0' (in 3X3 matrix of float)
0:123 'inF1' (in 3X3 matrix of float)
@@ -322,7 +357,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:137 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:131 Function Parameters:
0:131 'inF0' (in 4X4 matrix of float)
0:131 'inF1' (in 4X4 matrix of float)
@@ -373,6 +408,11 @@
0:? 4.000000
0:? 4.000000
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
Linked fragment stage:
@@ -381,51 +421,84 @@
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
-0:35 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
+0:2 Function Definition: PixelShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
0:2 'inF2' (in float)
0:2 'inI0' (in int)
0:? Sequence
-0:5 Constant:
-0:5 0.000000
-0:6 Constant:
-0:6 0.000000
-0:7 Constant:
-0:7 0.000000
-0:8 Constant:
-0:8 0.000000
-0:9 Constant:
-0:9 0.000000
+0:5 uint64BitsToDouble (temp double)
+0:5 Construct uvec2 (temp 2-component vector of uint)
+0:5 Convert float to uint (temp uint)
+0:5 'inF0' (in float)
+0:5 Convert float to uint (temp uint)
+0:5 'inF1' (in float)
+0:6 Function Call: CheckAccessFullyMapped(u1; (global bool)
+0:6 Constant:
+0:6 3 (const uint)
+0:7 bitCount (global uint)
+0:7 Convert float to uint (temp uint)
+0:7 'inF0' (in float)
+0:8 cross-product (global 3-component vector of float)
+0:8 Construct vec3 (in 3-component vector of float)
+0:8 'inF0' (in float)
+0:8 Construct vec3 (in 3-component vector of float)
+0:8 'inF1' (in float)
+0:9 Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int)
+0:9 Construct vec4 (in 4-component vector of float)
+0:9 'inF0' (in float)
0:10 Constant:
0:10 0.000000
-0:12 Constant:
-0:12 0.000000
-0:13 Constant:
-0:13 0.000000
-0:14 Constant:
-0:14 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:26 Constant:
-0:26 0.000000
-0:27 Constant:
-0:27 0.000000
+0:12 ERROR: Bad unary op
+ (global float)
+0:12 Convert float to uint (temp uint)
+0:12 'inF0' (in float)
+0:13 findMSB (global uint)
+0:13 Convert float to uint (temp uint)
+0:13 'inF0' (in float)
+0:14 findLSB (global uint)
+0:14 Convert float to uint (temp uint)
+0:14 'inF0' (in float)
+0:23 length (global float)
+0:23 Construct vec2 (in 2-component vector of float)
+0:23 'inF0' (in float)
+0:24 Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint)
+0:24 Convert float to uint (temp uint)
+0:24 'inF0' (in float)
+0:24 Constant:
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 Constant:
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:24 0 (const uint)
+0:25 normalize (global 2-component vector of float)
+0:25 Construct vec2 (in 2-component vector of float)
+0:25 'inF0' (in float)
+0:26 reflect (global 2-component vector of float)
+0:26 Construct vec2 (in 2-component vector of float)
+0:26 'inF0' (in float)
+0:26 Construct vec2 (in 2-component vector of float)
+0:26 'inF1' (in float)
+0:27 refract (global 2-component vector of float)
+0:27 Construct vec2 (in 2-component vector of float)
+0:27 'inF0' (in float)
+0:27 Construct vec2 (in 2-component vector of float)
+0:27 'inF1' (in float)
+0:27 'inF2' (in float)
0:28 Constant:
0:28 0.000000
-0:29 Constant:
-0:29 0.000000
+0:29 bitFieldReverse (global uint)
+0:29 Convert float to uint (temp uint)
+0:29 'inF0' (in float)
0:30 Constant:
0:30 0.000000
0:32 Branch: Return with expression
0:32 Constant:
0:32 0.000000
-0:44 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:36 Function Definition: PixelShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:36 Function Parameters:
0:36 'inF0' (in 1-component vector of float)
0:36 'inF1' (in 1-component vector of float)
@@ -437,40 +510,50 @@
0:41 Branch: Return with expression
0:41 Constant:
0:41 0.000000
-0:62 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:45 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:45 Function Parameters:
0:45 'inF0' (in 2-component vector of float)
0:45 'inF1' (in 2-component vector of float)
0:45 'inF2' (in 2-component vector of float)
0:45 'inI0' (in 2-component vector of int)
0:? Sequence
-0:46 Constant:
-0:46 0.000000
+0:46 ERROR: Bad aggregation op
+ (global 2-component vector of double)
+0:46 Convert float to uint (temp 2-component vector of uint)
+0:46 'inF0' (in 2-component vector of float)
+0:46 Convert float to uint (temp 2-component vector of uint)
+0:46 'inF1' (in 2-component vector of float)
0:47 Constant:
0:47 0.000000
-0:48 Constant:
-0:48 0.000000
+0:48 bitCount (global 2-component vector of uint)
+0:48 Convert float to uint (temp 2-component vector of uint)
+0:48 'inF0' (in 2-component vector of float)
0:49 Constant:
0:49 0.000000
0:50 Constant:
0:50 0.000000
0:51 Constant:
0:51 0.000000
-0:52 Constant:
-0:52 0.000000
-0:53 Constant:
-0:53 0.000000
-0:54 Constant:
-0:54 0.000000
-0:56 Constant:
-0:56 0.000000
+0:52 ERROR: Bad unary op
+ (global 2-component vector of float)
+0:52 Convert float to uint (temp 2-component vector of uint)
+0:52 'inF0' (in 2-component vector of float)
+0:53 findMSB (global 2-component vector of uint)
+0:53 Convert float to uint (temp 2-component vector of uint)
+0:53 'inF0' (in 2-component vector of float)
+0:54 findLSB (global 2-component vector of uint)
+0:54 Convert float to uint (temp 2-component vector of uint)
+0:54 'inF0' (in 2-component vector of float)
+0:56 bitFieldReverse (global 2-component vector of uint)
+0:56 Convert float to uint (temp 2-component vector of uint)
+0:56 'inF0' (in 2-component vector of float)
0:57 Constant:
0:57 0.000000
0:59 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:79 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:63 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:63 Function Parameters:
0:63 'inF0' (in 3-component vector of float)
0:63 'inF1' (in 3-component vector of float)
@@ -479,20 +562,26 @@
0:? Sequence
0:64 Constant:
0:64 0.000000
-0:65 Constant:
-0:65 0.000000
+0:65 bitCount (global 3-component vector of uint)
+0:65 Convert float to uint (temp 3-component vector of uint)
+0:65 'inF0' (in 3-component vector of float)
0:66 Constant:
0:66 0.000000
0:67 Constant:
0:67 0.000000
-0:68 Constant:
-0:68 0.000000
-0:69 Constant:
-0:69 0.000000
-0:70 Constant:
-0:70 0.000000
-0:72 Constant:
-0:72 0.000000
+0:68 ERROR: Bad unary op
+ (global 3-component vector of float)
+0:68 Convert float to uint (temp 3-component vector of uint)
+0:68 'inF0' (in 3-component vector of float)
+0:69 findMSB (global 3-component vector of uint)
+0:69 Convert float to uint (temp 3-component vector of uint)
+0:69 'inF0' (in 3-component vector of float)
+0:70 findLSB (global 3-component vector of uint)
+0:70 Convert float to uint (temp 3-component vector of uint)
+0:70 'inF0' (in 3-component vector of float)
+0:72 bitFieldReverse (global 3-component vector of uint)
+0:72 Convert float to uint (temp 3-component vector of uint)
+0:72 'inF0' (in 3-component vector of float)
0:73 Constant:
0:73 0.000000
0:76 Branch: Return with expression
@@ -500,38 +589,50 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:114 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:80 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:80 Function Parameters:
-0:80 'inF0' (in 4-component vector of float)
-0:80 'inF1' (in 4-component vector of float)
-0:80 'inF2' (in 4-component vector of float)
-0:80 'inI0' (in 4-component vector of int)
+0:80 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:80 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:80 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:80 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
0:81 Constant:
0:81 0.000000
-0:82 Constant:
-0:82 0.000000
-0:83 Constant:
-0:83 0.000000
+0:82 bitCount (global 4-component vector of uint)
+0:82 Convert float to uint (temp 4-component vector of uint)
+0:82 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:83 cross-product (global 3-component vector of float)
+0:83 Construct vec3 (in 3-component vector of float)
+0:83 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:83 Construct vec3 (in 3-component vector of float)
+0:83 'inF1' (layout(location=1 ) in 4-component vector of float)
0:84 Constant:
0:84 0.000000
-0:85 Constant:
-0:85 0.000000
-0:86 Constant:
-0:86 0.000000
-0:87 Constant:
-0:87 0.000000
-0:89 Constant:
-0:89 0.000000
+0:85 ERROR: Bad unary op
+ (global 4-component vector of float)
+0:85 Convert float to uint (temp 4-component vector of uint)
+0:85 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:86 findMSB (global 4-component vector of uint)
+0:86 Convert float to uint (temp 4-component vector of uint)
+0:86 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:87 findLSB (global 4-component vector of uint)
+0:87 Convert float to uint (temp 4-component vector of uint)
+0:87 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:89 bitFieldReverse (global 4-component vector of uint)
+0:89 Convert float to uint (temp 4-component vector of uint)
+0:89 'inF0' (layout(location=0 ) in 4-component vector of float)
0:90 Constant:
0:90 0.000000
-0:92 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
-0:122 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:92 Sequence
+0:92 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:92 Branch: Return
+0:115 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:115 Function Parameters:
0:115 'inF0' (in 2X2 matrix of float)
0:115 'inF1' (in 2X2 matrix of float)
@@ -569,7 +670,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:130 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:123 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:123 Function Parameters:
0:123 'inF0' (in 3X3 matrix of float)
0:123 'inF1' (in 3X3 matrix of float)
@@ -612,7 +713,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:137 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:131 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:131 Function Parameters:
0:131 'inF0' (in 4X4 matrix of float)
0:131 'inF1' (in 4X4 matrix of float)
@@ -663,5 +764,10 @@
0:? 4.000000
0:? 4.000000
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index 0e974a1..e702d33 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -1,714 +1,84 @@
hlsl.intrinsics.negative.vert
-ERROR: 0:18: 'AllMemoryBarrier' : no matching overloaded function found
-ERROR: 0:19: 'AllMemoryBarrierWithGroupSync' : no matching overloaded function found
-ERROR: 0:20: 'asdouble' : no matching overloaded function found
-ERROR: 0:21: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:22: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:23: 'clip' : no matching overloaded function found
-ERROR: 0:24: 'countbits' : no matching overloaded function found
-ERROR: 0:25: 'cross' : no matching overloaded function found
-ERROR: 0:26: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:27: 'DeviceMemoryBarrier' : no matching overloaded function found
-ERROR: 0:28: 'DeviceMemoryBarrierWithGroupSync' : no matching overloaded function found
-ERROR: 0:29: 'ddx' : no matching overloaded function found
-ERROR: 0:30: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:31: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:32: 'ddy' : no matching overloaded function found
-ERROR: 0:33: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:34: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:35: 'determinant' : no matching overloaded function found
-ERROR: 0:36: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:37: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:38: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:39: 'f16tof32' : no matching overloaded function found
-ERROR: 0:40: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:41: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:43: 'fwidth' : no matching overloaded function found
-ERROR: 0:44: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:45: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:46: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:47: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:48: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:49: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:50: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:51: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:52: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:53: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:54: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:55: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:56: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:57: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:58: 'GroupMemoryBarrier' : no matching overloaded function found
-ERROR: 0:59: 'GroupMemoryBarrierWithGroupSync' : no matching overloaded function found
-ERROR: 0:60: 'length' : no matching overloaded function found
-ERROR: 0:61: 'msad4' : no matching overloaded function found
-ERROR: 0:62: 'normalize' : no matching overloaded function found
-ERROR: 0:63: 'reflect' : no matching overloaded function found
-ERROR: 0:64: 'refract' : no matching overloaded function found
-ERROR: 0:65: 'refract' : no matching overloaded function found
-ERROR: 0:66: 'reversebits' : no matching overloaded function found
-ERROR: 0:67: 'transpose' : no matching overloaded function found
-ERROR: 0:78: 'GetRenderTargetSamplePosition' : no matching overloaded function found
-ERROR: 0:87: 'asdouble' : no matching overloaded function found
-ERROR: 0:88: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:89: 'countbits' : no matching overloaded function found
-ERROR: 0:90: 'cross' : no matching overloaded function found
-ERROR: 0:91: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:92: 'ddx' : no matching overloaded function found
-ERROR: 0:93: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:94: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:95: 'ddy' : no matching overloaded function found
-ERROR: 0:96: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:97: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:98: 'determinant' : no matching overloaded function found
-ERROR: 0:99: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:100: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:101: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:102: 'f16tof32' : no matching overloaded function found
-ERROR: 0:103: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:104: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:106: 'fwidth' : no matching overloaded function found
-ERROR: 0:107: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:108: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:109: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:110: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:111: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:112: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:113: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:114: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:115: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:116: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:117: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:118: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:119: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:120: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:121: 'noise' : no matching overloaded function found
-ERROR: 0:122: 'reversebits' : no matching overloaded function found
-ERROR: 0:123: 'transpose' : no matching overloaded function found
-ERROR: 0:134: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:135: 'countbits' : no matching overloaded function found
-ERROR: 0:136: 'ddx' : no matching overloaded function found
-ERROR: 0:137: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:138: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:139: 'ddy' : no matching overloaded function found
-ERROR: 0:140: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:141: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:142: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:143: 'determinant' : no matching overloaded function found
-ERROR: 0:144: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:145: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:146: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:147: 'f16tof32' : no matching overloaded function found
-ERROR: 0:148: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:149: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:151: 'fwidth' : no matching overloaded function found
-ERROR: 0:152: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:153: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:154: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:155: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:156: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:157: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:158: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:159: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:160: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:161: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:162: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:163: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:164: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:165: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:166: 'noise' : no matching overloaded function found
-ERROR: 0:167: 'reversebits' : no matching overloaded function found
-ERROR: 0:168: 'transpose' : no matching overloaded function found
-ERROR: 0:179: 'CheckAccessFullyMapped' : no matching overloaded function found
-ERROR: 0:180: 'countbits' : no matching overloaded function found
-ERROR: 0:181: 'cross' : no matching overloaded function found
-ERROR: 0:182: 'determinant' : no matching overloaded function found
-ERROR: 0:183: 'ddx' : no matching overloaded function found
-ERROR: 0:184: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:185: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:186: 'ddy' : no matching overloaded function found
-ERROR: 0:187: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:188: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:189: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:190: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:191: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:192: 'f16tof32' : no matching overloaded function found
-ERROR: 0:193: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:194: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:196: 'fwidth' : no matching overloaded function found
-ERROR: 0:197: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:198: 'InterlockedAdd' : no matching overloaded function found
-ERROR: 0:199: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:200: 'InterlockedAnd' : no matching overloaded function found
-ERROR: 0:201: 'InterlockedCompareExchange' : no matching overloaded function found
-ERROR: 0:202: 'InterlockedExchange' : no matching overloaded function found
-ERROR: 0:203: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:204: 'InterlockedMax' : no matching overloaded function found
-ERROR: 0:205: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:206: 'InterlockedMin' : no matching overloaded function found
-ERROR: 0:207: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:208: 'InterlockedOr' : no matching overloaded function found
-ERROR: 0:209: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:210: 'InterlockedXor' : no matching overloaded function found
-ERROR: 0:211: 'noise' : no matching overloaded function found
-ERROR: 0:212: 'reversebits' : no matching overloaded function found
-ERROR: 0:213: 'transpose' : no matching overloaded function found
-ERROR: 0:253: 'countbits' : no matching overloaded function found
-ERROR: 0:253: 'cross' : no matching overloaded function found
-ERROR: 0:253: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:253: 'ddx' : no matching overloaded function found
-ERROR: 0:253: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:253: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:253: 'ddy' : no matching overloaded function found
-ERROR: 0:253: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:253: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:253: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:253: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:253: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:253: 'f16tof32' : no matching overloaded function found
-ERROR: 0:253: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:253: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:253: 'fwidth' : no matching overloaded function found
-ERROR: 0:253: 'noise' : no matching overloaded function found
-ERROR: 0:253: 'reversebits' : no matching overloaded function found
-ERROR: 0:253: 'length' : no matching overloaded function found
-ERROR: 0:253: 'noise' : no matching overloaded function found
-ERROR: 0:253: 'normalize' : no matching overloaded function found
-ERROR: 0:253: 'reflect' : no matching overloaded function found
-ERROR: 0:253: 'refract' : no matching overloaded function found
-ERROR: 0:253: 'reversebits' : no matching overloaded function found
-ERROR: 0:261: 'countbits' : no matching overloaded function found
-ERROR: 0:261: 'cross' : no matching overloaded function found
-ERROR: 0:261: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:261: 'ddx' : no matching overloaded function found
-ERROR: 0:261: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:261: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:261: 'ddy' : no matching overloaded function found
-ERROR: 0:261: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:261: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:261: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:261: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:261: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:261: 'f16tof32' : no matching overloaded function found
-ERROR: 0:261: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:261: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:261: 'fwidth' : no matching overloaded function found
-ERROR: 0:261: 'noise' : no matching overloaded function found
-ERROR: 0:261: 'reversebits' : no matching overloaded function found
-ERROR: 0:261: 'length' : no matching overloaded function found
-ERROR: 0:261: 'noise' : no matching overloaded function found
-ERROR: 0:261: 'normalize' : no matching overloaded function found
-ERROR: 0:261: 'reflect' : no matching overloaded function found
-ERROR: 0:261: 'refract' : no matching overloaded function found
-ERROR: 0:261: 'reversebits' : no matching overloaded function found
-ERROR: 0:269: 'countbits' : no matching overloaded function found
-ERROR: 0:269: 'cross' : no matching overloaded function found
-ERROR: 0:269: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
-ERROR: 0:269: 'ddx' : no matching overloaded function found
-ERROR: 0:269: 'ddx_coarse' : no matching overloaded function found
-ERROR: 0:269: 'ddx_fine' : no matching overloaded function found
-ERROR: 0:269: 'ddy' : no matching overloaded function found
-ERROR: 0:269: 'ddy_coarse' : no matching overloaded function found
-ERROR: 0:269: 'ddy_fine' : no matching overloaded function found
-ERROR: 0:269: 'EvaluateAttributeAtCentroid' : no matching overloaded function found
-ERROR: 0:269: 'EvaluateAttributeAtSample' : no matching overloaded function found
-ERROR: 0:269: 'EvaluateAttributeSnapped' : no matching overloaded function found
-ERROR: 0:269: 'f16tof32' : no matching overloaded function found
-ERROR: 0:269: 'firstbithigh' : no matching overloaded function found
-ERROR: 0:269: 'firstbitlow' : no matching overloaded function found
-ERROR: 0:269: 'fwidth' : no matching overloaded function found
-ERROR: 0:269: 'noise' : no matching overloaded function found
-ERROR: 0:269: 'reversebits' : no matching overloaded function found
-ERROR: 0:269: 'length' : no matching overloaded function found
-ERROR: 0:269: 'noise' : no matching overloaded function found
-ERROR: 0:269: 'normalize' : no matching overloaded function found
-ERROR: 0:269: 'reflect' : no matching overloaded function found
-ERROR: 0:269: 'refract' : no matching overloaded function found
-ERROR: 0:269: 'reversebits' : no matching overloaded function found
-ERROR: 226 compilation errors. No code generated.
-
-
Shader version: 450
-ERROR: node is still EOpNull!
-0:74 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
+0:? Sequence
+0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
0:15 Function Parameters:
0:15 'inF0' (in float)
0:15 'inF1' (in float)
0:15 'inF2' (in float)
0:15 'inI0' (in int)
0:? Sequence
-0:18 Constant:
-0:18 0.000000
-0:19 Constant:
-0:19 0.000000
-0:20 Constant:
-0:20 0.000000
-0:21 Constant:
-0:21 0.000000
-0:22 Constant:
-0:22 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:26 Constant:
-0:26 0.000000
-0:27 Constant:
-0:27 0.000000
-0:28 Constant:
-0:28 0.000000
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
-0:31 Constant:
-0:31 0.000000
-0:32 Constant:
-0:32 0.000000
-0:33 Constant:
-0:33 0.000000
-0:34 Constant:
-0:34 0.000000
-0:35 Constant:
-0:35 0.000000
-0:36 Constant:
-0:36 0.000000
-0:37 Constant:
-0:37 0.000000
-0:38 Constant:
-0:38 0.000000
-0:39 Constant:
-0:39 0.000000
-0:40 Constant:
-0:40 0.000000
-0:41 Constant:
-0:41 0.000000
-0:43 Constant:
-0:43 0.000000
-0:44 Constant:
-0:44 0.000000
-0:45 Constant:
-0:45 0.000000
-0:46 Constant:
-0:46 0.000000
-0:47 Constant:
-0:47 0.000000
-0:48 Constant:
-0:48 0.000000
-0:49 Constant:
-0:49 0.000000
-0:50 Constant:
-0:50 0.000000
-0:51 Constant:
-0:51 0.000000
-0:52 Constant:
-0:52 0.000000
-0:53 Constant:
-0:53 0.000000
-0:54 Constant:
-0:54 0.000000
-0:55 Constant:
-0:55 0.000000
-0:56 Constant:
-0:56 0.000000
-0:57 Constant:
-0:57 0.000000
-0:58 Constant:
-0:58 0.000000
-0:59 Constant:
-0:59 0.000000
-0:60 Constant:
-0:60 0.000000
-0:61 Constant:
-0:61 0.000000
-0:62 Constant:
-0:62 0.000000
-0:63 Constant:
-0:63 0.000000
-0:64 Constant:
-0:64 0.000000
-0:65 Constant:
-0:65 0.000000
-0:66 Constant:
-0:66 0.000000
-0:67 Constant:
-0:67 0.000000
0:71 Branch: Return with expression
0:71 Constant:
0:71 0.000000
-0:83 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:75 Function Parameters:
0:75 'inF0' (in 1-component vector of float)
0:75 'inF1' (in 1-component vector of float)
0:75 'inF2' (in 1-component vector of float)
0:75 'inI0' (in 1-component vector of int)
0:? Sequence
-0:78 Constant:
-0:78 0.000000
0:80 Branch: Return with expression
0:80 Constant:
0:80 0.000000
-0:130 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:84 Function Parameters:
0:84 'inF0' (in 2-component vector of float)
0:84 'inF1' (in 2-component vector of float)
0:84 'inF2' (in 2-component vector of float)
0:84 'inI0' (in 2-component vector of int)
0:? Sequence
-0:87 Constant:
-0:87 0.000000
-0:88 Constant:
-0:88 0.000000
-0:89 Constant:
-0:89 0.000000
-0:90 Constant:
-0:90 0.000000
-0:91 Constant:
-0:91 0.000000
-0:92 Constant:
-0:92 0.000000
-0:93 Constant:
-0:93 0.000000
-0:94 Constant:
-0:94 0.000000
-0:95 Constant:
-0:95 0.000000
-0:96 Constant:
-0:96 0.000000
-0:97 Constant:
-0:97 0.000000
-0:98 Constant:
-0:98 0.000000
-0:99 Constant:
-0:99 0.000000
-0:100 Constant:
-0:100 0.000000
-0:101 Constant:
-0:101 0.000000
-0:102 Constant:
-0:102 0.000000
-0:103 Constant:
-0:103 0.000000
-0:104 Constant:
-0:104 0.000000
-0:106 Constant:
-0:106 0.000000
-0:107 Constant:
-0:107 0.000000
-0:108 Constant:
-0:108 0.000000
-0:109 Constant:
-0:109 0.000000
-0:110 Constant:
-0:110 0.000000
-0:111 Constant:
-0:111 0.000000
-0:112 Constant:
-0:112 0.000000
-0:113 Constant:
-0:113 0.000000
-0:114 Constant:
-0:114 0.000000
-0:115 Constant:
-0:115 0.000000
-0:116 Constant:
-0:116 0.000000
-0:117 Constant:
-0:117 0.000000
-0:118 Constant:
-0:118 0.000000
-0:119 Constant:
-0:119 0.000000
-0:120 Constant:
-0:120 0.000000
-0:121 Constant:
-0:121 0.000000
-0:122 Constant:
-0:122 0.000000
-0:123 Constant:
-0:123 0.000000
0:127 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:175 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:131 Function Parameters:
0:131 'inF0' (in 3-component vector of float)
0:131 'inF1' (in 3-component vector of float)
0:131 'inF2' (in 3-component vector of float)
0:131 'inI0' (in 3-component vector of int)
0:? Sequence
-0:134 Constant:
-0:134 0.000000
-0:135 Constant:
-0:135 0.000000
-0:136 Constant:
-0:136 0.000000
-0:137 Constant:
-0:137 0.000000
-0:138 Constant:
-0:138 0.000000
-0:139 Constant:
-0:139 0.000000
-0:140 Constant:
-0:140 0.000000
-0:141 Constant:
-0:141 0.000000
-0:142 Constant:
-0:142 0.000000
-0:143 Constant:
-0:143 0.000000
-0:144 Constant:
-0:144 0.000000
-0:145 Constant:
-0:145 0.000000
-0:146 Constant:
-0:146 0.000000
-0:147 Constant:
-0:147 0.000000
-0:148 Constant:
-0:148 0.000000
-0:149 Constant:
-0:149 0.000000
-0:151 Constant:
-0:151 0.000000
-0:152 Constant:
-0:152 0.000000
-0:153 Constant:
-0:153 0.000000
-0:154 Constant:
-0:154 0.000000
-0:155 Constant:
-0:155 0.000000
-0:156 Constant:
-0:156 0.000000
-0:157 Constant:
-0:157 0.000000
-0:158 Constant:
-0:158 0.000000
-0:159 Constant:
-0:159 0.000000
-0:160 Constant:
-0:160 0.000000
-0:161 Constant:
-0:161 0.000000
-0:162 Constant:
-0:162 0.000000
-0:163 Constant:
-0:163 0.000000
-0:164 Constant:
-0:164 0.000000
-0:165 Constant:
-0:165 0.000000
-0:166 Constant:
-0:166 0.000000
-0:167 Constant:
-0:167 0.000000
-0:168 Constant:
-0:168 0.000000
0:172 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:250 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:176 Function Parameters:
-0:176 'inF0' (in 4-component vector of float)
-0:176 'inF1' (in 4-component vector of float)
-0:176 'inF2' (in 4-component vector of float)
-0:176 'inI0' (in 4-component vector of int)
+0:176 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:176 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:176 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:176 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
-0:179 Constant:
-0:179 0.000000
-0:180 Constant:
-0:180 0.000000
-0:181 Constant:
-0:181 0.000000
-0:182 Constant:
-0:182 0.000000
-0:183 Constant:
-0:183 0.000000
-0:184 Constant:
-0:184 0.000000
-0:185 Constant:
-0:185 0.000000
-0:186 Constant:
-0:186 0.000000
-0:187 Constant:
-0:187 0.000000
-0:188 Constant:
-0:188 0.000000
-0:189 Constant:
-0:189 0.000000
-0:190 Constant:
-0:190 0.000000
-0:191 Constant:
-0:191 0.000000
-0:192 Constant:
-0:192 0.000000
-0:193 Constant:
-0:193 0.000000
-0:194 Constant:
-0:194 0.000000
-0:196 Constant:
-0:196 0.000000
-0:197 Constant:
-0:197 0.000000
-0:198 Constant:
-0:198 0.000000
-0:199 Constant:
-0:199 0.000000
-0:200 Constant:
-0:200 0.000000
-0:201 Constant:
-0:201 0.000000
-0:202 Constant:
-0:202 0.000000
-0:203 Constant:
-0:203 0.000000
-0:204 Constant:
-0:204 0.000000
-0:205 Constant:
-0:205 0.000000
-0:206 Constant:
-0:206 0.000000
-0:207 Constant:
-0:207 0.000000
-0:208 Constant:
-0:208 0.000000
-0:209 Constant:
-0:209 0.000000
-0:210 Constant:
-0:210 0.000000
-0:211 Constant:
-0:211 0.000000
-0:212 Constant:
-0:212 0.000000
-0:213 Constant:
-0:213 0.000000
-0:217 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
-0:258 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
-0:251 Function Parameters:
-0:251 'inF0' (in 2X2 matrix of float)
-0:251 'inF1' (in 2X2 matrix of float)
-0:251 'inF2' (in 2X2 matrix of float)
+0:217 Sequence
+0:217 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:217 Branch: Return
+0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226 Function Parameters:
+0:226 'inF0' (in 2X2 matrix of float)
+0:226 'inF1' (in 2X2 matrix of float)
+0:226 'inF2' (in 2X2 matrix of float)
0:? Sequence
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:255 Branch: Return with expression
+0:230 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:266 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
-0:259 Function Parameters:
-0:259 'inF0' (in 3X3 matrix of float)
-0:259 'inF1' (in 3X3 matrix of float)
-0:259 'inF2' (in 3X3 matrix of float)
+0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234 Function Parameters:
+0:234 'inF0' (in 3X3 matrix of float)
+0:234 'inF1' (in 3X3 matrix of float)
+0:234 'inF2' (in 3X3 matrix of float)
0:? Sequence
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:263 Branch: Return with expression
+0:238 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -719,61 +89,13 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:273 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
-0:267 Function Parameters:
-0:267 'inF0' (in 4X4 matrix of float)
-0:267 'inF1' (in 4X4 matrix of float)
-0:267 'inF2' (in 4X4 matrix of float)
+0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242 Function Parameters:
+0:242 'inF0' (in 4X4 matrix of float)
+0:242 'inF1' (in 4X4 matrix of float)
+0:242 'inF2' (in 4X4 matrix of float)
0:? Sequence
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:271 Branch: Return with expression
+0:246 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -804,492 +126,96 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
Linked vertex stage:
Shader version: 450
-ERROR: node is still EOpNull!
-0:74 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
+0:? Sequence
+0:15 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
0:15 Function Parameters:
0:15 'inF0' (in float)
0:15 'inF1' (in float)
0:15 'inF2' (in float)
0:15 'inI0' (in int)
0:? Sequence
-0:18 Constant:
-0:18 0.000000
-0:19 Constant:
-0:19 0.000000
-0:20 Constant:
-0:20 0.000000
-0:21 Constant:
-0:21 0.000000
-0:22 Constant:
-0:22 0.000000
-0:23 Constant:
-0:23 0.000000
-0:24 Constant:
-0:24 0.000000
-0:25 Constant:
-0:25 0.000000
-0:26 Constant:
-0:26 0.000000
-0:27 Constant:
-0:27 0.000000
-0:28 Constant:
-0:28 0.000000
-0:29 Constant:
-0:29 0.000000
-0:30 Constant:
-0:30 0.000000
-0:31 Constant:
-0:31 0.000000
-0:32 Constant:
-0:32 0.000000
-0:33 Constant:
-0:33 0.000000
-0:34 Constant:
-0:34 0.000000
-0:35 Constant:
-0:35 0.000000
-0:36 Constant:
-0:36 0.000000
-0:37 Constant:
-0:37 0.000000
-0:38 Constant:
-0:38 0.000000
-0:39 Constant:
-0:39 0.000000
-0:40 Constant:
-0:40 0.000000
-0:41 Constant:
-0:41 0.000000
-0:43 Constant:
-0:43 0.000000
-0:44 Constant:
-0:44 0.000000
-0:45 Constant:
-0:45 0.000000
-0:46 Constant:
-0:46 0.000000
-0:47 Constant:
-0:47 0.000000
-0:48 Constant:
-0:48 0.000000
-0:49 Constant:
-0:49 0.000000
-0:50 Constant:
-0:50 0.000000
-0:51 Constant:
-0:51 0.000000
-0:52 Constant:
-0:52 0.000000
-0:53 Constant:
-0:53 0.000000
-0:54 Constant:
-0:54 0.000000
-0:55 Constant:
-0:55 0.000000
-0:56 Constant:
-0:56 0.000000
-0:57 Constant:
-0:57 0.000000
-0:58 Constant:
-0:58 0.000000
-0:59 Constant:
-0:59 0.000000
-0:60 Constant:
-0:60 0.000000
-0:61 Constant:
-0:61 0.000000
-0:62 Constant:
-0:62 0.000000
-0:63 Constant:
-0:63 0.000000
-0:64 Constant:
-0:64 0.000000
-0:65 Constant:
-0:65 0.000000
-0:66 Constant:
-0:66 0.000000
-0:67 Constant:
-0:67 0.000000
0:71 Branch: Return with expression
0:71 Constant:
0:71 0.000000
-0:83 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
+0:75 Function Definition: VertexShaderFunction1(vf1;vf1;vf1;vi1; (global 1-component vector of float)
0:75 Function Parameters:
0:75 'inF0' (in 1-component vector of float)
0:75 'inF1' (in 1-component vector of float)
0:75 'inF2' (in 1-component vector of float)
0:75 'inI0' (in 1-component vector of int)
0:? Sequence
-0:78 Constant:
-0:78 0.000000
0:80 Branch: Return with expression
0:80 Constant:
0:80 0.000000
-0:130 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
+0:84 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vi2; (global 2-component vector of float)
0:84 Function Parameters:
0:84 'inF0' (in 2-component vector of float)
0:84 'inF1' (in 2-component vector of float)
0:84 'inF2' (in 2-component vector of float)
0:84 'inI0' (in 2-component vector of int)
0:? Sequence
-0:87 Constant:
-0:87 0.000000
-0:88 Constant:
-0:88 0.000000
-0:89 Constant:
-0:89 0.000000
-0:90 Constant:
-0:90 0.000000
-0:91 Constant:
-0:91 0.000000
-0:92 Constant:
-0:92 0.000000
-0:93 Constant:
-0:93 0.000000
-0:94 Constant:
-0:94 0.000000
-0:95 Constant:
-0:95 0.000000
-0:96 Constant:
-0:96 0.000000
-0:97 Constant:
-0:97 0.000000
-0:98 Constant:
-0:98 0.000000
-0:99 Constant:
-0:99 0.000000
-0:100 Constant:
-0:100 0.000000
-0:101 Constant:
-0:101 0.000000
-0:102 Constant:
-0:102 0.000000
-0:103 Constant:
-0:103 0.000000
-0:104 Constant:
-0:104 0.000000
-0:106 Constant:
-0:106 0.000000
-0:107 Constant:
-0:107 0.000000
-0:108 Constant:
-0:108 0.000000
-0:109 Constant:
-0:109 0.000000
-0:110 Constant:
-0:110 0.000000
-0:111 Constant:
-0:111 0.000000
-0:112 Constant:
-0:112 0.000000
-0:113 Constant:
-0:113 0.000000
-0:114 Constant:
-0:114 0.000000
-0:115 Constant:
-0:115 0.000000
-0:116 Constant:
-0:116 0.000000
-0:117 Constant:
-0:117 0.000000
-0:118 Constant:
-0:118 0.000000
-0:119 Constant:
-0:119 0.000000
-0:120 Constant:
-0:120 0.000000
-0:121 Constant:
-0:121 0.000000
-0:122 Constant:
-0:122 0.000000
-0:123 Constant:
-0:123 0.000000
0:127 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:175 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
+0:131 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; (global 3-component vector of float)
0:131 Function Parameters:
0:131 'inF0' (in 3-component vector of float)
0:131 'inF1' (in 3-component vector of float)
0:131 'inF2' (in 3-component vector of float)
0:131 'inI0' (in 3-component vector of int)
0:? Sequence
-0:134 Constant:
-0:134 0.000000
-0:135 Constant:
-0:135 0.000000
-0:136 Constant:
-0:136 0.000000
-0:137 Constant:
-0:137 0.000000
-0:138 Constant:
-0:138 0.000000
-0:139 Constant:
-0:139 0.000000
-0:140 Constant:
-0:140 0.000000
-0:141 Constant:
-0:141 0.000000
-0:142 Constant:
-0:142 0.000000
-0:143 Constant:
-0:143 0.000000
-0:144 Constant:
-0:144 0.000000
-0:145 Constant:
-0:145 0.000000
-0:146 Constant:
-0:146 0.000000
-0:147 Constant:
-0:147 0.000000
-0:148 Constant:
-0:148 0.000000
-0:149 Constant:
-0:149 0.000000
-0:151 Constant:
-0:151 0.000000
-0:152 Constant:
-0:152 0.000000
-0:153 Constant:
-0:153 0.000000
-0:154 Constant:
-0:154 0.000000
-0:155 Constant:
-0:155 0.000000
-0:156 Constant:
-0:156 0.000000
-0:157 Constant:
-0:157 0.000000
-0:158 Constant:
-0:158 0.000000
-0:159 Constant:
-0:159 0.000000
-0:160 Constant:
-0:160 0.000000
-0:161 Constant:
-0:161 0.000000
-0:162 Constant:
-0:162 0.000000
-0:163 Constant:
-0:163 0.000000
-0:164 Constant:
-0:164 0.000000
-0:165 Constant:
-0:165 0.000000
-0:166 Constant:
-0:166 0.000000
-0:167 Constant:
-0:167 0.000000
-0:168 Constant:
-0:168 0.000000
0:172 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:250 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
+0:176 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:176 Function Parameters:
-0:176 'inF0' (in 4-component vector of float)
-0:176 'inF1' (in 4-component vector of float)
-0:176 'inF2' (in 4-component vector of float)
-0:176 'inI0' (in 4-component vector of int)
+0:176 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:176 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:176 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:176 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? Sequence
-0:179 Constant:
-0:179 0.000000
-0:180 Constant:
-0:180 0.000000
-0:181 Constant:
-0:181 0.000000
-0:182 Constant:
-0:182 0.000000
-0:183 Constant:
-0:183 0.000000
-0:184 Constant:
-0:184 0.000000
-0:185 Constant:
-0:185 0.000000
-0:186 Constant:
-0:186 0.000000
-0:187 Constant:
-0:187 0.000000
-0:188 Constant:
-0:188 0.000000
-0:189 Constant:
-0:189 0.000000
-0:190 Constant:
-0:190 0.000000
-0:191 Constant:
-0:191 0.000000
-0:192 Constant:
-0:192 0.000000
-0:193 Constant:
-0:193 0.000000
-0:194 Constant:
-0:194 0.000000
-0:196 Constant:
-0:196 0.000000
-0:197 Constant:
-0:197 0.000000
-0:198 Constant:
-0:198 0.000000
-0:199 Constant:
-0:199 0.000000
-0:200 Constant:
-0:200 0.000000
-0:201 Constant:
-0:201 0.000000
-0:202 Constant:
-0:202 0.000000
-0:203 Constant:
-0:203 0.000000
-0:204 Constant:
-0:204 0.000000
-0:205 Constant:
-0:205 0.000000
-0:206 Constant:
-0:206 0.000000
-0:207 Constant:
-0:207 0.000000
-0:208 Constant:
-0:208 0.000000
-0:209 Constant:
-0:209 0.000000
-0:210 Constant:
-0:210 0.000000
-0:211 Constant:
-0:211 0.000000
-0:212 Constant:
-0:212 0.000000
-0:213 Constant:
-0:213 0.000000
-0:217 Branch: Return with expression
-0:? Constant:
-0:? 1.000000
-0:? 2.000000
-0:? 3.000000
-0:? 4.000000
-0:258 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
-0:251 Function Parameters:
-0:251 'inF0' (in 2X2 matrix of float)
-0:251 'inF1' (in 2X2 matrix of float)
-0:251 'inF2' (in 2X2 matrix of float)
+0:217 Sequence
+0:217 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? Constant:
+0:? 1.000000
+0:? 2.000000
+0:? 3.000000
+0:? 4.000000
+0:217 Branch: Return
+0:226 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226 Function Parameters:
+0:226 'inF0' (in 2X2 matrix of float)
+0:226 'inF1' (in 2X2 matrix of float)
+0:226 'inF2' (in 2X2 matrix of float)
0:? Sequence
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:255 Branch: Return with expression
+0:230 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:266 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
-0:259 Function Parameters:
-0:259 'inF0' (in 3X3 matrix of float)
-0:259 'inF1' (in 3X3 matrix of float)
-0:259 'inF2' (in 3X3 matrix of float)
+0:234 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234 Function Parameters:
+0:234 'inF0' (in 3X3 matrix of float)
+0:234 'inF1' (in 3X3 matrix of float)
+0:234 'inF2' (in 3X3 matrix of float)
0:? Sequence
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:263 Branch: Return with expression
+0:238 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -1300,61 +226,13 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:273 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
-0:267 Function Parameters:
-0:267 'inF0' (in 4X4 matrix of float)
-0:267 'inF1' (in 4X4 matrix of float)
-0:267 'inF2' (in 4X4 matrix of float)
+0:242 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242 Function Parameters:
+0:242 'inF0' (in 4X4 matrix of float)
+0:242 'inF1' (in 4X4 matrix of float)
+0:242 'inF2' (in 4X4 matrix of float)
0:? Sequence
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:271 Branch: Return with expression
+0:246 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -1385,5 +263,200 @@
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
+0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
+0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
+0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
-SPIR-V is not generated for failed compile or link
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 128
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "VertexShaderFunction" 85 122 123 124 127
+ Name 4 "VertexShaderFunction"
+ Name 15 "VertexShaderFunctionS(f1;f1;f1;i1;"
+ Name 11 "inF0"
+ Name 12 "inF1"
+ Name 13 "inF2"
+ Name 14 "inI0"
+ Name 21 "VertexShaderFunction1(vf1;vf1;vf1;vi1;"
+ Name 17 "inF0"
+ Name 18 "inF1"
+ Name 19 "inF2"
+ Name 20 "inI0"
+ Name 32 "VertexShaderFunction2(vf2;vf2;vf2;vi2;"
+ Name 28 "inF0"
+ Name 29 "inF1"
+ Name 30 "inF2"
+ Name 31 "inI0"
+ Name 43 "VertexShaderFunction3(vf3;vf3;vf3;vi3;"
+ Name 39 "inF0"
+ Name 40 "inF1"
+ Name 41 "inF2"
+ Name 42 "inI0"
+ Name 51 "VertexShaderFunction2x2(mf22;mf22;mf22;"
+ Name 48 "inF0"
+ Name 49 "inF1"
+ Name 50 "inF2"
+ Name 59 "VertexShaderFunction3x3(mf33;mf33;mf33;"
+ Name 56 "inF0"
+ Name 57 "inF1"
+ Name 58 "inF2"
+ Name 68 "VertexShaderFunction4x4(mf44;mf44;mf44;"
+ Name 65 "inF0"
+ Name 66 "inF1"
+ Name 67 "inF2"
+ Name 85 "@entryPointOutput"
+ Name 103 "gs_ua"
+ Name 104 "gs_ub"
+ Name 105 "gs_uc"
+ Name 108 "gs_ua2"
+ Name 109 "gs_ub2"
+ Name 110 "gs_uc2"
+ Name 113 "gs_ua3"
+ Name 114 "gs_ub3"
+ Name 115 "gs_uc3"
+ Name 118 "gs_ua4"
+ Name 119 "gs_ub4"
+ Name 120 "gs_uc4"
+ Name 122 "inF0"
+ Name 123 "inF1"
+ Name 124 "inF2"
+ Name 127 "inI0"
+ Decorate 85(@entryPointOutput) Location 0
+ Decorate 122(inF0) Location 0
+ Decorate 123(inF1) Location 1
+ Decorate 124(inF2) Location 2
+ Decorate 127(inI0) Location 3
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeInt 32 1
+ 9: TypePointer Function 8(int)
+ 10: TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr)
+ 23: TypeVector 6(float) 2
+ 24: TypePointer Function 23(fvec2)
+ 25: TypeVector 8(int) 2
+ 26: TypePointer Function 25(ivec2)
+ 27: TypeFunction 23(fvec2) 24(ptr) 24(ptr) 24(ptr) 26(ptr)
+ 34: TypeVector 6(float) 3
+ 35: TypePointer Function 34(fvec3)
+ 36: TypeVector 8(int) 3
+ 37: TypePointer Function 36(ivec3)
+ 38: TypeFunction 34(fvec3) 35(ptr) 35(ptr) 35(ptr) 37(ptr)
+ 45: TypeMatrix 23(fvec2) 2
+ 46: TypePointer Function 45
+ 47: TypeFunction 45 46(ptr) 46(ptr) 46(ptr)
+ 53: TypeMatrix 34(fvec3) 3
+ 54: TypePointer Function 53
+ 55: TypeFunction 53 54(ptr) 54(ptr) 54(ptr)
+ 61: TypeVector 6(float) 4
+ 62: TypeMatrix 61(fvec4) 4
+ 63: TypePointer Function 62
+ 64: TypeFunction 62 63(ptr) 63(ptr) 63(ptr)
+ 70: 6(float) Constant 0
+ 75: 6(float) Constant 1065353216
+ 76: 6(float) Constant 1073741824
+ 77: 23(fvec2) ConstantComposite 75 76
+ 80: 6(float) Constant 1077936128
+ 81: 34(fvec3) ConstantComposite 75 76 80
+ 84: TypePointer Output 61(fvec4)
+85(@entryPointOutput): 84(ptr) Variable Output
+ 86: 6(float) Constant 1082130432
+ 87: 61(fvec4) ConstantComposite 75 76 80 86
+ 89: 23(fvec2) ConstantComposite 76 76
+ 90: 45 ConstantComposite 89 89
+ 93: 34(fvec3) ConstantComposite 80 80 80
+ 94: 53 ConstantComposite 93 93 93
+ 97: 61(fvec4) ConstantComposite 86 86 86 86
+ 98: 62 ConstantComposite 97 97 97 97
+ 101: TypeInt 32 0
+ 102: TypePointer Private 101(int)
+ 103(gs_ua): 102(ptr) Variable Private
+ 104(gs_ub): 102(ptr) Variable Private
+ 105(gs_uc): 102(ptr) Variable Private
+ 106: TypeVector 101(int) 2
+ 107: TypePointer Private 106(ivec2)
+ 108(gs_ua2): 107(ptr) Variable Private
+ 109(gs_ub2): 107(ptr) Variable Private
+ 110(gs_uc2): 107(ptr) Variable Private
+ 111: TypeVector 101(int) 3
+ 112: TypePointer Private 111(ivec3)
+ 113(gs_ua3): 112(ptr) Variable Private
+ 114(gs_ub3): 112(ptr) Variable Private
+ 115(gs_uc3): 112(ptr) Variable Private
+ 116: TypeVector 101(int) 4
+ 117: TypePointer Private 116(ivec4)
+ 118(gs_ua4): 117(ptr) Variable Private
+ 119(gs_ub4): 117(ptr) Variable Private
+ 120(gs_uc4): 117(ptr) Variable Private
+ 121: TypePointer Input 61(fvec4)
+ 122(inF0): 121(ptr) Variable Input
+ 123(inF1): 121(ptr) Variable Input
+ 124(inF2): 121(ptr) Variable Input
+ 125: TypeVector 8(int) 4
+ 126: TypePointer Input 125(ivec4)
+ 127(inI0): 126(ptr) Variable Input
+4(VertexShaderFunction): 2 Function None 3
+ 5: Label
+ Store 85(@entryPointOutput) 87
+ Return
+ FunctionEnd
+15(VertexShaderFunctionS(f1;f1;f1;i1;): 6(float) Function None 10
+ 11(inF0): 7(ptr) FunctionParameter
+ 12(inF1): 7(ptr) FunctionParameter
+ 13(inF2): 7(ptr) FunctionParameter
+ 14(inI0): 9(ptr) FunctionParameter
+ 16: Label
+ ReturnValue 70
+ FunctionEnd
+21(VertexShaderFunction1(vf1;vf1;vf1;vi1;): 6(float) Function None 10
+ 17(inF0): 7(ptr) FunctionParameter
+ 18(inF1): 7(ptr) FunctionParameter
+ 19(inF2): 7(ptr) FunctionParameter
+ 20(inI0): 9(ptr) FunctionParameter
+ 22: Label
+ ReturnValue 70
+ FunctionEnd
+32(VertexShaderFunction2(vf2;vf2;vf2;vi2;): 23(fvec2) Function None 27
+ 28(inF0): 24(ptr) FunctionParameter
+ 29(inF1): 24(ptr) FunctionParameter
+ 30(inF2): 24(ptr) FunctionParameter
+ 31(inI0): 26(ptr) FunctionParameter
+ 33: Label
+ ReturnValue 77
+ FunctionEnd
+43(VertexShaderFunction3(vf3;vf3;vf3;vi3;): 34(fvec3) Function None 38
+ 39(inF0): 35(ptr) FunctionParameter
+ 40(inF1): 35(ptr) FunctionParameter
+ 41(inF2): 35(ptr) FunctionParameter
+ 42(inI0): 37(ptr) FunctionParameter
+ 44: Label
+ ReturnValue 81
+ FunctionEnd
+51(VertexShaderFunction2x2(mf22;mf22;mf22;): 45 Function None 47
+ 48(inF0): 46(ptr) FunctionParameter
+ 49(inF1): 46(ptr) FunctionParameter
+ 50(inF2): 46(ptr) FunctionParameter
+ 52: Label
+ ReturnValue 90
+ FunctionEnd
+59(VertexShaderFunction3x3(mf33;mf33;mf33;): 53 Function None 55
+ 56(inF0): 54(ptr) FunctionParameter
+ 57(inF1): 54(ptr) FunctionParameter
+ 58(inF2): 54(ptr) FunctionParameter
+ 60: Label
+ ReturnValue 94
+ FunctionEnd
+68(VertexShaderFunction4x4(mf44;mf44;mf44;): 62 Function None 64
+ 65(inF0): 63(ptr) FunctionParameter
+ 66(inF1): 63(ptr) FunctionParameter
+ 67(inF2): 63(ptr) FunctionParameter
+ 69: Label
+ ReturnValue 98
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 926501e..121c809 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -1,7 +1,7 @@
hlsl.intrinsics.vert
Shader version: 450
0:? Sequence
-0:63 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@@ -142,7 +142,7 @@
0:60 Branch: Return with expression
0:60 Constant:
0:60 0.000000
-0:69 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:64 Function Parameters:
0:64 'inF0' (in 1-component vector of float)
0:64 'inF1' (in 1-component vector of float)
@@ -151,7 +151,7 @@
0:66 Branch: Return with expression
0:66 Constant:
0:66 0.000000
-0:139 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:70 Function Parameters:
0:70 'inF0' (in 2-component vector of float)
0:70 'inF1' (in 2-component vector of float)
@@ -317,7 +317,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:210 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:140 Function Parameters:
0:140 'inF0' (in 3-component vector of float)
0:140 'inF1' (in 3-component vector of float)
@@ -489,7 +489,7 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:335 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:211 Function Parameters:
0:211 'inF0' (in 4-component vector of float)
0:211 'inF1' (in 4-component vector of float)
@@ -681,7 +681,7 @@
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:344 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:336 Function Parameters:
0:336 'inF0' (in 2X2 matrix of float)
0:336 'inF1' (in 2X2 matrix of float)
@@ -811,7 +811,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:353 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:345 Function Parameters:
0:345 'inF0' (in 3X3 matrix of float)
0:345 'inF1' (in 3X3 matrix of float)
@@ -946,7 +946,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:374 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:354 Function Parameters:
0:354 'inF0' (in 4X4 matrix of float)
0:354 'inF1' (in 4X4 matrix of float)
@@ -1088,7 +1088,7 @@
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:381 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
0:377 Function Parameters:
0:377 'inF0' (in float)
0:377 'inF1' (in float)
@@ -1101,20 +1101,20 @@
0:378 move second child to first child (temp float)
0:378 'r0' (temp float)
0:378 component-wise multiply (temp float)
-0:378 'inF0' (in float)
0:378 'inF1' (in float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r1' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float)
-0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float)
+0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r2' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float)
-0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp float)
0:378 'r3' (temp float)
@@ -1124,34 +1124,34 @@
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r4' (temp 2-component vector of float)
-0:378 matrix-times-vector (temp 2-component vector of float)
-0:378 'inFM0' (in 2X2 matrix of float)
-0:378 'inFV0' (in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child (temp 2-component vector of float)
-0:378 'r5' (temp 2-component vector of float)
0:378 vector-times-matrix (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence
+0:378 move second child to first child (temp 2-component vector of float)
+0:378 'r5' (temp 2-component vector of float)
+0:378 matrix-times-vector (temp 2-component vector of float)
+0:378 'inFM0' (in 2X2 matrix of float)
+0:378 'inFV0' (in 2-component vector of float)
+0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r6' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float)
-0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float)
+0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r7' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float)
-0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r8' (temp 2X2 matrix of float)
0:378 matrix-multiply (temp 2X2 matrix of float)
-0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFM1' (in 2X2 matrix of float)
-0:388 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:378 'inFM0' (in 2X2 matrix of float)
+0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:384 Function Parameters:
0:384 'inF0' (in float)
0:384 'inF1' (in float)
@@ -1164,20 +1164,20 @@
0:385 move second child to first child (temp float)
0:385 'r0' (temp float)
0:385 component-wise multiply (temp float)
-0:385 'inF0' (in float)
0:385 'inF1' (in float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r1' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float)
-0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float)
+0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r2' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float)
-0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp float)
0:385 'r3' (temp float)
@@ -1187,34 +1187,34 @@
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r4' (temp 3-component vector of float)
-0:385 matrix-times-vector (temp 3-component vector of float)
-0:385 'inFM0' (in 3X3 matrix of float)
-0:385 'inFV0' (in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child (temp 3-component vector of float)
-0:385 'r5' (temp 3-component vector of float)
0:385 vector-times-matrix (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence
+0:385 move second child to first child (temp 3-component vector of float)
+0:385 'r5' (temp 3-component vector of float)
+0:385 matrix-times-vector (temp 3-component vector of float)
+0:385 'inFM0' (in 3X3 matrix of float)
+0:385 'inFV0' (in 3-component vector of float)
+0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r6' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float)
-0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float)
+0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r7' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float)
-0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r8' (temp 3X3 matrix of float)
0:385 matrix-multiply (temp 3X3 matrix of float)
-0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFM1' (in 3X3 matrix of float)
-0:396 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:385 'inFM0' (in 3X3 matrix of float)
+0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:391 Function Parameters:
0:391 'inF0' (in float)
0:391 'inF1' (in float)
@@ -1227,20 +1227,20 @@
0:392 move second child to first child (temp float)
0:392 'r0' (temp float)
0:392 component-wise multiply (temp float)
-0:392 'inF0' (in float)
0:392 'inF1' (in float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r1' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float)
-0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float)
+0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r2' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float)
-0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp float)
0:392 'r3' (temp float)
@@ -1250,75 +1250,75 @@
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r4' (temp 4-component vector of float)
-0:392 matrix-times-vector (temp 4-component vector of float)
-0:392 'inFM0' (in 4X4 matrix of float)
-0:392 'inFV0' (in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child (temp 4-component vector of float)
-0:392 'r5' (temp 4-component vector of float)
0:392 vector-times-matrix (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence
+0:392 move second child to first child (temp 4-component vector of float)
+0:392 'r5' (temp 4-component vector of float)
+0:392 matrix-times-vector (temp 4-component vector of float)
+0:392 'inFM0' (in 4X4 matrix of float)
+0:392 'inFV0' (in 4-component vector of float)
+0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r6' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float)
-0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float)
+0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r7' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float)
-0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r8' (temp 4X4 matrix of float)
0:392 matrix-multiply (temp 4X4 matrix of float)
-0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFM1' (in 4X4 matrix of float)
-0:420 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:392 'inFM0' (in 4X4 matrix of float)
+0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:401 Function Parameters:
0:401 'inF0' (in float)
0:401 'inF1' (in float)
0:401 'inFV2' (in 2-component vector of float)
0:401 'inFV3' (in 3-component vector of float)
-0:401 'inFM2x3' (in 3X2 matrix of float)
-0:401 'inFM3x2' (in 2X3 matrix of float)
+0:401 'inFM2x3' (in 2X3 matrix of float)
+0:401 'inFM3x2' (in 3X2 matrix of float)
0:401 'inFM3x3' (in 3X3 matrix of float)
-0:401 'inFM3x4' (in 4X3 matrix of float)
-0:401 'inFM2x4' (in 4X2 matrix of float)
+0:401 'inFM3x4' (in 3X4 matrix of float)
+0:401 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence
0:402 Sequence
0:402 move second child to first child (temp float)
0:402 'r00' (temp float)
0:402 component-wise multiply (temp float)
-0:402 'inF0' (in float)
0:402 'inF1' (in float)
+0:402 'inF0' (in float)
0:403 Sequence
0:403 move second child to first child (temp 2-component vector of float)
0:403 'r01' (temp 2-component vector of float)
0:403 vector-scale (temp 2-component vector of float)
-0:403 'inFV2' (in 2-component vector of float)
0:403 'inF0' (in float)
+0:403 'inFV2' (in 2-component vector of float)
0:404 Sequence
0:404 move second child to first child (temp 3-component vector of float)
0:404 'r02' (temp 3-component vector of float)
0:404 vector-scale (temp 3-component vector of float)
-0:404 'inFV3' (in 3-component vector of float)
0:404 'inF0' (in float)
+0:404 'inFV3' (in 3-component vector of float)
0:405 Sequence
0:405 move second child to first child (temp 2-component vector of float)
0:405 'r03' (temp 2-component vector of float)
0:405 vector-scale (temp 2-component vector of float)
-0:405 'inF0' (in float)
0:405 'inFV2' (in 2-component vector of float)
+0:405 'inF0' (in float)
0:406 Sequence
0:406 move second child to first child (temp 3-component vector of float)
0:406 'r04' (temp 3-component vector of float)
0:406 vector-scale (temp 3-component vector of float)
-0:406 'inF0' (in float)
0:406 'inFV3' (in 3-component vector of float)
+0:406 'inF0' (in float)
0:407 Sequence
0:407 move second child to first child (temp float)
0:407 'r05' (temp float)
@@ -1334,63 +1334,63 @@
0:409 Sequence
0:409 move second child to first child (temp 3-component vector of float)
0:409 'r07' (temp 3-component vector of float)
-0:409 vector-times-matrix (temp 3-component vector of float)
+0:409 matrix-times-vector (temp 3-component vector of float)
+0:409 'inFM2x3' (in 2X3 matrix of float)
0:409 'inFV2' (in 2-component vector of float)
-0:409 'inFM2x3' (in 3X2 matrix of float)
0:410 Sequence
0:410 move second child to first child (temp 2-component vector of float)
0:410 'r08' (temp 2-component vector of float)
-0:410 vector-times-matrix (temp 2-component vector of float)
+0:410 matrix-times-vector (temp 2-component vector of float)
+0:410 'inFM3x2' (in 3X2 matrix of float)
0:410 'inFV3' (in 3-component vector of float)
-0:410 'inFM3x2' (in 2X3 matrix of float)
0:411 Sequence
0:411 move second child to first child (temp 2-component vector of float)
0:411 'r09' (temp 2-component vector of float)
-0:411 matrix-times-vector (temp 2-component vector of float)
-0:411 'inFM2x3' (in 3X2 matrix of float)
+0:411 vector-times-matrix (temp 2-component vector of float)
0:411 'inFV3' (in 3-component vector of float)
+0:411 'inFM2x3' (in 2X3 matrix of float)
0:412 Sequence
0:412 move second child to first child (temp 3-component vector of float)
0:412 'r10' (temp 3-component vector of float)
-0:412 matrix-times-vector (temp 3-component vector of float)
-0:412 'inFM3x2' (in 2X3 matrix of float)
+0:412 vector-times-matrix (temp 3-component vector of float)
0:412 'inFV2' (in 2-component vector of float)
+0:412 'inFM3x2' (in 3X2 matrix of float)
0:413 Sequence
-0:413 move second child to first child (temp 3X2 matrix of float)
-0:413 'r11' (temp 3X2 matrix of float)
-0:413 matrix-scale (temp 3X2 matrix of float)
-0:413 'inFM2x3' (in 3X2 matrix of float)
+0:413 move second child to first child (temp 2X3 matrix of float)
+0:413 'r11' (temp 2X3 matrix of float)
+0:413 matrix-scale (temp 2X3 matrix of float)
0:413 'inF0' (in float)
+0:413 'inFM2x3' (in 2X3 matrix of float)
0:414 Sequence
-0:414 move second child to first child (temp 2X3 matrix of float)
-0:414 'r12' (temp 2X3 matrix of float)
-0:414 matrix-scale (temp 2X3 matrix of float)
-0:414 'inFM3x2' (in 2X3 matrix of float)
+0:414 move second child to first child (temp 3X2 matrix of float)
+0:414 'r12' (temp 3X2 matrix of float)
+0:414 matrix-scale (temp 3X2 matrix of float)
0:414 'inF0' (in float)
+0:414 'inFM3x2' (in 3X2 matrix of float)
0:415 Sequence
0:415 move second child to first child (temp 2X2 matrix of float)
0:415 'r13' (temp 2X2 matrix of float)
0:415 matrix-multiply (temp 2X2 matrix of float)
-0:415 'inFM2x3' (in 3X2 matrix of float)
-0:415 'inFM3x2' (in 2X3 matrix of float)
+0:415 'inFM3x2' (in 3X2 matrix of float)
+0:415 'inFM2x3' (in 2X3 matrix of float)
0:416 Sequence
-0:416 move second child to first child (temp 3X2 matrix of float)
-0:416 'r14' (temp 3X2 matrix of float)
-0:416 matrix-multiply (temp 3X2 matrix of float)
-0:416 'inFM2x3' (in 3X2 matrix of float)
+0:416 move second child to first child (temp 2X3 matrix of float)
+0:416 'r14' (temp 2X3 matrix of float)
+0:416 matrix-multiply (temp 2X3 matrix of float)
0:416 'inFM3x3' (in 3X3 matrix of float)
+0:416 'inFM2x3' (in 2X3 matrix of float)
0:417 Sequence
-0:417 move second child to first child (temp 4X2 matrix of float)
-0:417 'r15' (temp 4X2 matrix of float)
-0:417 matrix-multiply (temp 4X2 matrix of float)
-0:417 'inFM2x3' (in 3X2 matrix of float)
-0:417 'inFM3x4' (in 4X3 matrix of float)
+0:417 move second child to first child (temp 2X4 matrix of float)
+0:417 'r15' (temp 2X4 matrix of float)
+0:417 matrix-multiply (temp 2X4 matrix of float)
+0:417 'inFM3x4' (in 3X4 matrix of float)
+0:417 'inFM2x3' (in 2X3 matrix of float)
0:418 Sequence
-0:418 move second child to first child (temp 4X3 matrix of float)
-0:418 'r16' (temp 4X3 matrix of float)
-0:418 matrix-multiply (temp 4X3 matrix of float)
-0:418 'inFM3x2' (in 2X3 matrix of float)
-0:418 'inFM2x4' (in 4X2 matrix of float)
+0:418 move second child to first child (temp 3X4 matrix of float)
+0:418 'r16' (temp 3X4 matrix of float)
+0:418 matrix-multiply (temp 3X4 matrix of float)
+0:418 'inFM2x4' (in 2X4 matrix of float)
+0:418 'inFM3x2' (in 3X2 matrix of float)
0:? Linker Objects
@@ -1399,7 +1399,7 @@
Shader version: 450
0:? Sequence
-0:63 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
+0:2 Function Definition: VertexShaderFunctionS(f1;f1;f1;u1;u1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF1' (in float)
@@ -1540,7 +1540,7 @@
0:60 Branch: Return with expression
0:60 Constant:
0:60 0.000000
-0:69 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
+0:64 Function Definition: VertexShaderFunction1(vf1;vf1;vf1; (global 1-component vector of float)
0:64 Function Parameters:
0:64 'inF0' (in 1-component vector of float)
0:64 'inF1' (in 1-component vector of float)
@@ -1549,7 +1549,7 @@
0:66 Branch: Return with expression
0:66 Constant:
0:66 0.000000
-0:139 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
+0:70 Function Definition: VertexShaderFunction2(vf2;vf2;vf2;vu2;vu2; (global 2-component vector of float)
0:70 Function Parameters:
0:70 'inF0' (in 2-component vector of float)
0:70 'inF1' (in 2-component vector of float)
@@ -1715,7 +1715,7 @@
0:? Constant:
0:? 1.000000
0:? 2.000000
-0:210 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
+0:140 Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float)
0:140 Function Parameters:
0:140 'inF0' (in 3-component vector of float)
0:140 'inF1' (in 3-component vector of float)
@@ -1887,7 +1887,7 @@
0:? 1.000000
0:? 2.000000
0:? 3.000000
-0:335 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
+0:211 Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float)
0:211 Function Parameters:
0:211 'inF0' (in 4-component vector of float)
0:211 'inF1' (in 4-component vector of float)
@@ -2079,7 +2079,7 @@
0:? 2.000000
0:? 3.000000
0:? 4.000000
-0:344 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:336 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
0:336 Function Parameters:
0:336 'inF0' (in 2X2 matrix of float)
0:336 'inF1' (in 2X2 matrix of float)
@@ -2209,7 +2209,7 @@
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:353 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:345 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
0:345 Function Parameters:
0:345 'inF0' (in 3X3 matrix of float)
0:345 'inF1' (in 3X3 matrix of float)
@@ -2344,7 +2344,7 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:374 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:354 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
0:354 Function Parameters:
0:354 'inF0' (in 4X4 matrix of float)
0:354 'inF1' (in 4X4 matrix of float)
@@ -2486,7 +2486,7 @@
0:? 4.000000
0:? 4.000000
0:? 4.000000
-0:381 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
+0:377 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void)
0:377 Function Parameters:
0:377 'inF0' (in float)
0:377 'inF1' (in float)
@@ -2499,20 +2499,20 @@
0:378 move second child to first child (temp float)
0:378 'r0' (temp float)
0:378 component-wise multiply (temp float)
-0:378 'inF0' (in float)
0:378 'inF1' (in float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r1' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float)
-0:378 'inFV0' (in 2-component vector of float)
0:378 'inF0' (in float)
+0:378 'inFV0' (in 2-component vector of float)
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r2' (temp 2-component vector of float)
0:378 vector-scale (temp 2-component vector of float)
-0:378 'inF0' (in float)
0:378 'inFV0' (in 2-component vector of float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp float)
0:378 'r3' (temp float)
@@ -2522,34 +2522,34 @@
0:378 Sequence
0:378 move second child to first child (temp 2-component vector of float)
0:378 'r4' (temp 2-component vector of float)
-0:378 matrix-times-vector (temp 2-component vector of float)
-0:378 'inFM0' (in 2X2 matrix of float)
-0:378 'inFV0' (in 2-component vector of float)
-0:378 Sequence
-0:378 move second child to first child (temp 2-component vector of float)
-0:378 'r5' (temp 2-component vector of float)
0:378 vector-times-matrix (temp 2-component vector of float)
0:378 'inFV0' (in 2-component vector of float)
0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence
+0:378 move second child to first child (temp 2-component vector of float)
+0:378 'r5' (temp 2-component vector of float)
+0:378 matrix-times-vector (temp 2-component vector of float)
+0:378 'inFM0' (in 2X2 matrix of float)
+0:378 'inFV0' (in 2-component vector of float)
+0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r6' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float)
-0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inF0' (in float)
+0:378 'inFM0' (in 2X2 matrix of float)
0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r7' (temp 2X2 matrix of float)
0:378 matrix-scale (temp 2X2 matrix of float)
-0:378 'inF0' (in float)
0:378 'inFM0' (in 2X2 matrix of float)
+0:378 'inF0' (in float)
0:378 Sequence
0:378 move second child to first child (temp 2X2 matrix of float)
0:378 'r8' (temp 2X2 matrix of float)
0:378 matrix-multiply (temp 2X2 matrix of float)
-0:378 'inFM0' (in 2X2 matrix of float)
0:378 'inFM1' (in 2X2 matrix of float)
-0:388 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
+0:378 'inFM0' (in 2X2 matrix of float)
+0:384 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void)
0:384 Function Parameters:
0:384 'inF0' (in float)
0:384 'inF1' (in float)
@@ -2562,20 +2562,20 @@
0:385 move second child to first child (temp float)
0:385 'r0' (temp float)
0:385 component-wise multiply (temp float)
-0:385 'inF0' (in float)
0:385 'inF1' (in float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r1' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float)
-0:385 'inFV0' (in 3-component vector of float)
0:385 'inF0' (in float)
+0:385 'inFV0' (in 3-component vector of float)
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r2' (temp 3-component vector of float)
0:385 vector-scale (temp 3-component vector of float)
-0:385 'inF0' (in float)
0:385 'inFV0' (in 3-component vector of float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp float)
0:385 'r3' (temp float)
@@ -2585,34 +2585,34 @@
0:385 Sequence
0:385 move second child to first child (temp 3-component vector of float)
0:385 'r4' (temp 3-component vector of float)
-0:385 matrix-times-vector (temp 3-component vector of float)
-0:385 'inFM0' (in 3X3 matrix of float)
-0:385 'inFV0' (in 3-component vector of float)
-0:385 Sequence
-0:385 move second child to first child (temp 3-component vector of float)
-0:385 'r5' (temp 3-component vector of float)
0:385 vector-times-matrix (temp 3-component vector of float)
0:385 'inFV0' (in 3-component vector of float)
0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence
+0:385 move second child to first child (temp 3-component vector of float)
+0:385 'r5' (temp 3-component vector of float)
+0:385 matrix-times-vector (temp 3-component vector of float)
+0:385 'inFM0' (in 3X3 matrix of float)
+0:385 'inFV0' (in 3-component vector of float)
+0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r6' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float)
-0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inF0' (in float)
+0:385 'inFM0' (in 3X3 matrix of float)
0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r7' (temp 3X3 matrix of float)
0:385 matrix-scale (temp 3X3 matrix of float)
-0:385 'inF0' (in float)
0:385 'inFM0' (in 3X3 matrix of float)
+0:385 'inF0' (in float)
0:385 Sequence
0:385 move second child to first child (temp 3X3 matrix of float)
0:385 'r8' (temp 3X3 matrix of float)
0:385 matrix-multiply (temp 3X3 matrix of float)
-0:385 'inFM0' (in 3X3 matrix of float)
0:385 'inFM1' (in 3X3 matrix of float)
-0:396 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
+0:385 'inFM0' (in 3X3 matrix of float)
+0:391 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void)
0:391 Function Parameters:
0:391 'inF0' (in float)
0:391 'inF1' (in float)
@@ -2625,20 +2625,20 @@
0:392 move second child to first child (temp float)
0:392 'r0' (temp float)
0:392 component-wise multiply (temp float)
-0:392 'inF0' (in float)
0:392 'inF1' (in float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r1' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float)
-0:392 'inFV0' (in 4-component vector of float)
0:392 'inF0' (in float)
+0:392 'inFV0' (in 4-component vector of float)
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r2' (temp 4-component vector of float)
0:392 vector-scale (temp 4-component vector of float)
-0:392 'inF0' (in float)
0:392 'inFV0' (in 4-component vector of float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp float)
0:392 'r3' (temp float)
@@ -2648,75 +2648,75 @@
0:392 Sequence
0:392 move second child to first child (temp 4-component vector of float)
0:392 'r4' (temp 4-component vector of float)
-0:392 matrix-times-vector (temp 4-component vector of float)
-0:392 'inFM0' (in 4X4 matrix of float)
-0:392 'inFV0' (in 4-component vector of float)
-0:392 Sequence
-0:392 move second child to first child (temp 4-component vector of float)
-0:392 'r5' (temp 4-component vector of float)
0:392 vector-times-matrix (temp 4-component vector of float)
0:392 'inFV0' (in 4-component vector of float)
0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence
+0:392 move second child to first child (temp 4-component vector of float)
+0:392 'r5' (temp 4-component vector of float)
+0:392 matrix-times-vector (temp 4-component vector of float)
+0:392 'inFM0' (in 4X4 matrix of float)
+0:392 'inFV0' (in 4-component vector of float)
+0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r6' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float)
-0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inF0' (in float)
+0:392 'inFM0' (in 4X4 matrix of float)
0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r7' (temp 4X4 matrix of float)
0:392 matrix-scale (temp 4X4 matrix of float)
-0:392 'inF0' (in float)
0:392 'inFM0' (in 4X4 matrix of float)
+0:392 'inF0' (in float)
0:392 Sequence
0:392 move second child to first child (temp 4X4 matrix of float)
0:392 'r8' (temp 4X4 matrix of float)
0:392 matrix-multiply (temp 4X4 matrix of float)
-0:392 'inFM0' (in 4X4 matrix of float)
0:392 'inFM1' (in 4X4 matrix of float)
-0:420 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void)
+0:392 'inFM0' (in 4X4 matrix of float)
+0:401 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (global void)
0:401 Function Parameters:
0:401 'inF0' (in float)
0:401 'inF1' (in float)
0:401 'inFV2' (in 2-component vector of float)
0:401 'inFV3' (in 3-component vector of float)
-0:401 'inFM2x3' (in 3X2 matrix of float)
-0:401 'inFM3x2' (in 2X3 matrix of float)
+0:401 'inFM2x3' (in 2X3 matrix of float)
+0:401 'inFM3x2' (in 3X2 matrix of float)
0:401 'inFM3x3' (in 3X3 matrix of float)
-0:401 'inFM3x4' (in 4X3 matrix of float)
-0:401 'inFM2x4' (in 4X2 matrix of float)
+0:401 'inFM3x4' (in 3X4 matrix of float)
+0:401 'inFM2x4' (in 2X4 matrix of float)
0:? Sequence
0:402 Sequence
0:402 move second child to first child (temp float)
0:402 'r00' (temp float)
0:402 component-wise multiply (temp float)
-0:402 'inF0' (in float)
0:402 'inF1' (in float)
+0:402 'inF0' (in float)
0:403 Sequence
0:403 move second child to first child (temp 2-component vector of float)
0:403 'r01' (temp 2-component vector of float)
0:403 vector-scale (temp 2-component vector of float)
-0:403 'inFV2' (in 2-component vector of float)
0:403 'inF0' (in float)
+0:403 'inFV2' (in 2-component vector of float)
0:404 Sequence
0:404 move second child to first child (temp 3-component vector of float)
0:404 'r02' (temp 3-component vector of float)
0:404 vector-scale (temp 3-component vector of float)
-0:404 'inFV3' (in 3-component vector of float)
0:404 'inF0' (in float)
+0:404 'inFV3' (in 3-component vector of float)
0:405 Sequence
0:405 move second child to first child (temp 2-component vector of float)
0:405 'r03' (temp 2-component vector of float)
0:405 vector-scale (temp 2-component vector of float)
-0:405 'inF0' (in float)
0:405 'inFV2' (in 2-component vector of float)
+0:405 'inF0' (in float)
0:406 Sequence
0:406 move second child to first child (temp 3-component vector of float)
0:406 'r04' (temp 3-component vector of float)
0:406 vector-scale (temp 3-component vector of float)
-0:406 'inF0' (in float)
0:406 'inFV3' (in 3-component vector of float)
+0:406 'inF0' (in float)
0:407 Sequence
0:407 move second child to first child (temp float)
0:407 'r05' (temp float)
@@ -2732,63 +2732,63 @@
0:409 Sequence
0:409 move second child to first child (temp 3-component vector of float)
0:409 'r07' (temp 3-component vector of float)
-0:409 vector-times-matrix (temp 3-component vector of float)
+0:409 matrix-times-vector (temp 3-component vector of float)
+0:409 'inFM2x3' (in 2X3 matrix of float)
0:409 'inFV2' (in 2-component vector of float)
-0:409 'inFM2x3' (in 3X2 matrix of float)
0:410 Sequence
0:410 move second child to first child (temp 2-component vector of float)
0:410 'r08' (temp 2-component vector of float)
-0:410 vector-times-matrix (temp 2-component vector of float)
+0:410 matrix-times-vector (temp 2-component vector of float)
+0:410 'inFM3x2' (in 3X2 matrix of float)
0:410 'inFV3' (in 3-component vector of float)
-0:410 'inFM3x2' (in 2X3 matrix of float)
0:411 Sequence
0:411 move second child to first child (temp 2-component vector of float)
0:411 'r09' (temp 2-component vector of float)
-0:411 matrix-times-vector (temp 2-component vector of float)
-0:411 'inFM2x3' (in 3X2 matrix of float)
+0:411 vector-times-matrix (temp 2-component vector of float)
0:411 'inFV3' (in 3-component vector of float)
+0:411 'inFM2x3' (in 2X3 matrix of float)
0:412 Sequence
0:412 move second child to first child (temp 3-component vector of float)
0:412 'r10' (temp 3-component vector of float)
-0:412 matrix-times-vector (temp 3-component vector of float)
-0:412 'inFM3x2' (in 2X3 matrix of float)
+0:412 vector-times-matrix (temp 3-component vector of float)
0:412 'inFV2' (in 2-component vector of float)
+0:412 'inFM3x2' (in 3X2 matrix of float)
0:413 Sequence
-0:413 move second child to first child (temp 3X2 matrix of float)
-0:413 'r11' (temp 3X2 matrix of float)
-0:413 matrix-scale (temp 3X2 matrix of float)
-0:413 'inFM2x3' (in 3X2 matrix of float)
+0:413 move second child to first child (temp 2X3 matrix of float)
+0:413 'r11' (temp 2X3 matrix of float)
+0:413 matrix-scale (temp 2X3 matrix of float)
0:413 'inF0' (in float)
+0:413 'inFM2x3' (in 2X3 matrix of float)
0:414 Sequence
-0:414 move second child to first child (temp 2X3 matrix of float)
-0:414 'r12' (temp 2X3 matrix of float)
-0:414 matrix-scale (temp 2X3 matrix of float)
-0:414 'inFM3x2' (in 2X3 matrix of float)
+0:414 move second child to first child (temp 3X2 matrix of float)
+0:414 'r12' (temp 3X2 matrix of float)
+0:414 matrix-scale (temp 3X2 matrix of float)
0:414 'inF0' (in float)
+0:414 'inFM3x2' (in 3X2 matrix of float)
0:415 Sequence
0:415 move second child to first child (temp 2X2 matrix of float)
0:415 'r13' (temp 2X2 matrix of float)
0:415 matrix-multiply (temp 2X2 matrix of float)
-0:415 'inFM2x3' (in 3X2 matrix of float)
-0:415 'inFM3x2' (in 2X3 matrix of float)
+0:415 'inFM3x2' (in 3X2 matrix of float)
+0:415 'inFM2x3' (in 2X3 matrix of float)
0:416 Sequence
-0:416 move second child to first child (temp 3X2 matrix of float)
-0:416 'r14' (temp 3X2 matrix of float)
-0:416 matrix-multiply (temp 3X2 matrix of float)
-0:416 'inFM2x3' (in 3X2 matrix of float)
+0:416 move second child to first child (temp 2X3 matrix of float)
+0:416 'r14' (temp 2X3 matrix of float)
+0:416 matrix-multiply (temp 2X3 matrix of float)
0:416 'inFM3x3' (in 3X3 matrix of float)
+0:416 'inFM2x3' (in 2X3 matrix of float)
0:417 Sequence
-0:417 move second child to first child (temp 4X2 matrix of float)
-0:417 'r15' (temp 4X2 matrix of float)
-0:417 matrix-multiply (temp 4X2 matrix of float)
-0:417 'inFM2x3' (in 3X2 matrix of float)
-0:417 'inFM3x4' (in 4X3 matrix of float)
+0:417 move second child to first child (temp 2X4 matrix of float)
+0:417 'r15' (temp 2X4 matrix of float)
+0:417 matrix-multiply (temp 2X4 matrix of float)
+0:417 'inFM3x4' (in 3X4 matrix of float)
+0:417 'inFM2x3' (in 2X3 matrix of float)
0:418 Sequence
-0:418 move second child to first child (temp 4X3 matrix of float)
-0:418 'r16' (temp 4X3 matrix of float)
-0:418 matrix-multiply (temp 4X3 matrix of float)
-0:418 'inFM3x2' (in 2X3 matrix of float)
-0:418 'inFM2x4' (in 4X2 matrix of float)
+0:418 move second child to first child (temp 3X4 matrix of float)
+0:418 'r16' (temp 3X4 matrix of float)
+0:418 matrix-multiply (temp 3X4 matrix of float)
+0:418 'inFM2x4' (in 2X4 matrix of float)
+0:418 'inFM3x2' (in 3X2 matrix of float)
0:? Linker Objects
// Module Version 10000
@@ -2799,7 +2799,6 @@
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "VertexShaderFunction"
- Source HLSL 450
Name 4 "VertexShaderFunction"
Name 16 "VertexShaderFunctionS(f1;f1;f1;u1;u1;"
Name 11 "inF0"
@@ -2862,7 +2861,7 @@
Name 106 "inFV1"
Name 107 "inFM0"
Name 108 "inFM1"
- Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;"
+ Name 129 "TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;"
Name 120 "inF0"
Name 121 "inF1"
Name 122 "inFV2"
@@ -2958,13 +2957,13 @@
84: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 25(ptr) 61(ptr) 61(ptr)
93: TypeFunction 2 7(ptr) 7(ptr) 37(ptr) 37(ptr) 69(ptr) 69(ptr)
102: TypeFunction 2 7(ptr) 7(ptr) 49(ptr) 49(ptr) 77(ptr) 77(ptr)
- 111: TypeMatrix 24(fvec2) 3
+ 111: TypeMatrix 36(fvec3) 2
112: TypePointer Function 111
- 113: TypeMatrix 36(fvec3) 2
+ 113: TypeMatrix 24(fvec2) 3
114: TypePointer Function 113
- 115: TypeMatrix 36(fvec3) 4
+ 115: TypeMatrix 48(fvec4) 3
116: TypePointer Function 115
- 117: TypeMatrix 24(fvec2) 4
+ 117: TypeMatrix 48(fvec4) 2
118: TypePointer Function 117
119: TypeFunction 2 7(ptr) 7(ptr) 25(ptr) 37(ptr) 112(ptr) 114(ptr) 69(ptr) 116(ptr) 118(ptr)
132: TypeBool
@@ -3987,40 +3986,40 @@
1086(r6): 61(ptr) Variable Function
1090(r7): 61(ptr) Variable Function
1094(r8): 61(ptr) Variable Function
- 1063: 6(float) Load 85(inF0)
- 1064: 6(float) Load 86(inF1)
+ 1063: 6(float) Load 86(inF1)
+ 1064: 6(float) Load 85(inF0)
1065: 6(float) FMul 1063 1064
Store 1062(r0) 1065
- 1067: 24(fvec2) Load 87(inFV0)
- 1068: 6(float) Load 85(inF0)
- 1069: 24(fvec2) VectorTimesScalar 1067 1068
+ 1067: 6(float) Load 85(inF0)
+ 1068: 24(fvec2) Load 87(inFV0)
+ 1069: 24(fvec2) VectorTimesScalar 1068 1067
Store 1066(r1) 1069
- 1071: 6(float) Load 85(inF0)
- 1072: 24(fvec2) Load 87(inFV0)
- 1073: 24(fvec2) VectorTimesScalar 1072 1071
+ 1071: 24(fvec2) Load 87(inFV0)
+ 1072: 6(float) Load 85(inF0)
+ 1073: 24(fvec2) VectorTimesScalar 1071 1072
Store 1070(r2) 1073
1075: 24(fvec2) Load 87(inFV0)
1076: 24(fvec2) Load 88(inFV1)
1077: 6(float) Dot 1075 1076
Store 1074(r3) 1077
- 1079: 60 Load 89(inFM0)
- 1080: 24(fvec2) Load 87(inFV0)
- 1081: 24(fvec2) MatrixTimesVector 1079 1080
+ 1079: 24(fvec2) Load 87(inFV0)
+ 1080: 60 Load 89(inFM0)
+ 1081: 24(fvec2) VectorTimesMatrix 1079 1080
Store 1078(r4) 1081
- 1083: 24(fvec2) Load 87(inFV0)
- 1084: 60 Load 89(inFM0)
- 1085: 24(fvec2) VectorTimesMatrix 1083 1084
+ 1083: 60 Load 89(inFM0)
+ 1084: 24(fvec2) Load 87(inFV0)
+ 1085: 24(fvec2) MatrixTimesVector 1083 1084
Store 1082(r5) 1085
- 1087: 60 Load 89(inFM0)
- 1088: 6(float) Load 85(inF0)
- 1089: 60 MatrixTimesScalar 1087 1088
+ 1087: 6(float) Load 85(inF0)
+ 1088: 60 Load 89(inFM0)
+ 1089: 60 MatrixTimesScalar 1088 1087
Store 1086(r6) 1089
- 1091: 6(float) Load 85(inF0)
- 1092: 60 Load 89(inFM0)
- 1093: 60 MatrixTimesScalar 1092 1091
+ 1091: 60 Load 89(inFM0)
+ 1092: 6(float) Load 85(inF0)
+ 1093: 60 MatrixTimesScalar 1091 1092
Store 1090(r7) 1093
- 1095: 60 Load 89(inFM0)
- 1096: 60 Load 90(inFM1)
+ 1095: 60 Load 90(inFM1)
+ 1096: 60 Load 89(inFM0)
1097: 60 MatrixTimesMatrix 1095 1096
Store 1094(r8) 1097
Return
@@ -4042,40 +4041,40 @@
1122(r6): 69(ptr) Variable Function
1126(r7): 69(ptr) Variable Function
1130(r8): 69(ptr) Variable Function
- 1099: 6(float) Load 94(inF0)
- 1100: 6(float) Load 95(inF1)
+ 1099: 6(float) Load 95(inF1)
+ 1100: 6(float) Load 94(inF0)
1101: 6(float) FMul 1099 1100
Store 1098(r0) 1101
- 1103: 36(fvec3) Load 96(inFV0)
- 1104: 6(float) Load 94(inF0)
- 1105: 36(fvec3) VectorTimesScalar 1103 1104
+ 1103: 6(float) Load 94(inF0)
+ 1104: 36(fvec3) Load 96(inFV0)
+ 1105: 36(fvec3) VectorTimesScalar 1104 1103
Store 1102(r1) 1105
- 1107: 6(float) Load 94(inF0)
- 1108: 36(fvec3) Load 96(inFV0)
- 1109: 36(fvec3) VectorTimesScalar 1108 1107
+ 1107: 36(fvec3) Load 96(inFV0)
+ 1108: 6(float) Load 94(inF0)
+ 1109: 36(fvec3) VectorTimesScalar 1107 1108
Store 1106(r2) 1109
1111: 36(fvec3) Load 96(inFV0)
1112: 36(fvec3) Load 97(inFV1)
1113: 6(float) Dot 1111 1112
Store 1110(r3) 1113
- 1115: 68 Load 98(inFM0)
- 1116: 36(fvec3) Load 96(inFV0)
- 1117: 36(fvec3) MatrixTimesVector 1115 1116
+ 1115: 36(fvec3) Load 96(inFV0)
+ 1116: 68 Load 98(inFM0)
+ 1117: 36(fvec3) VectorTimesMatrix 1115 1116
Store 1114(r4) 1117
- 1119: 36(fvec3) Load 96(inFV0)
- 1120: 68 Load 98(inFM0)
- 1121: 36(fvec3) VectorTimesMatrix 1119 1120
+ 1119: 68 Load 98(inFM0)
+ 1120: 36(fvec3) Load 96(inFV0)
+ 1121: 36(fvec3) MatrixTimesVector 1119 1120
Store 1118(r5) 1121
- 1123: 68 Load 98(inFM0)
- 1124: 6(float) Load 94(inF0)
- 1125: 68 MatrixTimesScalar 1123 1124
+ 1123: 6(float) Load 94(inF0)
+ 1124: 68 Load 98(inFM0)
+ 1125: 68 MatrixTimesScalar 1124 1123
Store 1122(r6) 1125
- 1127: 6(float) Load 94(inF0)
- 1128: 68 Load 98(inFM0)
- 1129: 68 MatrixTimesScalar 1128 1127
+ 1127: 68 Load 98(inFM0)
+ 1128: 6(float) Load 94(inF0)
+ 1129: 68 MatrixTimesScalar 1127 1128
Store 1126(r7) 1129
- 1131: 68 Load 98(inFM0)
- 1132: 68 Load 99(inFM1)
+ 1131: 68 Load 99(inFM1)
+ 1132: 68 Load 98(inFM0)
1133: 68 MatrixTimesMatrix 1131 1132
Store 1130(r8) 1133
Return
@@ -4097,45 +4096,45 @@
1158(r6): 77(ptr) Variable Function
1162(r7): 77(ptr) Variable Function
1166(r8): 77(ptr) Variable Function
- 1135: 6(float) Load 103(inF0)
- 1136: 6(float) Load 104(inF1)
+ 1135: 6(float) Load 104(inF1)
+ 1136: 6(float) Load 103(inF0)
1137: 6(float) FMul 1135 1136
Store 1134(r0) 1137
- 1139: 48(fvec4) Load 105(inFV0)
- 1140: 6(float) Load 103(inF0)
- 1141: 48(fvec4) VectorTimesScalar 1139 1140
+ 1139: 6(float) Load 103(inF0)
+ 1140: 48(fvec4) Load 105(inFV0)
+ 1141: 48(fvec4) VectorTimesScalar 1140 1139
Store 1138(r1) 1141
- 1143: 6(float) Load 103(inF0)
- 1144: 48(fvec4) Load 105(inFV0)
- 1145: 48(fvec4) VectorTimesScalar 1144 1143
+ 1143: 48(fvec4) Load 105(inFV0)
+ 1144: 6(float) Load 103(inF0)
+ 1145: 48(fvec4) VectorTimesScalar 1143 1144
Store 1142(r2) 1145
1147: 48(fvec4) Load 105(inFV0)
1148: 48(fvec4) Load 106(inFV1)
1149: 6(float) Dot 1147 1148
Store 1146(r3) 1149
- 1151: 76 Load 107(inFM0)
- 1152: 48(fvec4) Load 105(inFV0)
- 1153: 48(fvec4) MatrixTimesVector 1151 1152
+ 1151: 48(fvec4) Load 105(inFV0)
+ 1152: 76 Load 107(inFM0)
+ 1153: 48(fvec4) VectorTimesMatrix 1151 1152
Store 1150(r4) 1153
- 1155: 48(fvec4) Load 105(inFV0)
- 1156: 76 Load 107(inFM0)
- 1157: 48(fvec4) VectorTimesMatrix 1155 1156
+ 1155: 76 Load 107(inFM0)
+ 1156: 48(fvec4) Load 105(inFV0)
+ 1157: 48(fvec4) MatrixTimesVector 1155 1156
Store 1154(r5) 1157
- 1159: 76 Load 107(inFM0)
- 1160: 6(float) Load 103(inF0)
- 1161: 76 MatrixTimesScalar 1159 1160
+ 1159: 6(float) Load 103(inF0)
+ 1160: 76 Load 107(inFM0)
+ 1161: 76 MatrixTimesScalar 1160 1159
Store 1158(r6) 1161
- 1163: 6(float) Load 103(inF0)
- 1164: 76 Load 107(inFM0)
- 1165: 76 MatrixTimesScalar 1164 1163
+ 1163: 76 Load 107(inFM0)
+ 1164: 6(float) Load 103(inF0)
+ 1165: 76 MatrixTimesScalar 1163 1164
Store 1162(r7) 1165
- 1167: 76 Load 107(inFM0)
- 1168: 76 Load 108(inFM1)
+ 1167: 76 Load 108(inFM1)
+ 1168: 76 Load 107(inFM0)
1169: 76 MatrixTimesMatrix 1167 1168
Store 1166(r8) 1169
Return
FunctionEnd
-129(TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42;): 2 Function None 119
+129(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 119
120(inF0): 7(ptr) FunctionParameter
121(inF1): 7(ptr) FunctionParameter
122(inFV2): 25(ptr) FunctionParameter
@@ -4163,25 +4162,25 @@
1226(r14): 112(ptr) Variable Function
1230(r15): 118(ptr) Variable Function
1234(r16): 116(ptr) Variable Function
- 1171: 6(float) Load 120(inF0)
- 1172: 6(float) Load 121(inF1)
+ 1171: 6(float) Load 121(inF1)
+ 1172: 6(float) Load 120(inF0)
1173: 6(float) FMul 1171 1172
Store 1170(r00) 1173
- 1175: 24(fvec2) Load 122(inFV2)
- 1176: 6(float) Load 120(inF0)
- 1177: 24(fvec2) VectorTimesScalar 1175 1176
+ 1175: 6(float) Load 120(inF0)
+ 1176: 24(fvec2) Load 122(inFV2)
+ 1177: 24(fvec2) VectorTimesScalar 1176 1175
Store 1174(r01) 1177
- 1179: 36(fvec3) Load 123(inFV3)
- 1180: 6(float) Load 120(inF0)
- 1181: 36(fvec3) VectorTimesScalar 1179 1180
+ 1179: 6(float) Load 120(inF0)
+ 1180: 36(fvec3) Load 123(inFV3)
+ 1181: 36(fvec3) VectorTimesScalar 1180 1179
Store 1178(r02) 1181
- 1183: 6(float) Load 120(inF0)
- 1184: 24(fvec2) Load 122(inFV2)
- 1185: 24(fvec2) VectorTimesScalar 1184 1183
+ 1183: 24(fvec2) Load 122(inFV2)
+ 1184: 6(float) Load 120(inF0)
+ 1185: 24(fvec2) VectorTimesScalar 1183 1184
Store 1182(r03) 1185
- 1187: 6(float) Load 120(inF0)
- 1188: 36(fvec3) Load 123(inFV3)
- 1189: 36(fvec3) VectorTimesScalar 1188 1187
+ 1187: 36(fvec3) Load 123(inFV3)
+ 1188: 6(float) Load 120(inF0)
+ 1189: 36(fvec3) VectorTimesScalar 1187 1188
Store 1186(r04) 1189
1191: 24(fvec2) Load 122(inFV2)
1192: 24(fvec2) Load 122(inFV2)
@@ -4191,44 +4190,44 @@
1196: 36(fvec3) Load 123(inFV3)
1197: 6(float) Dot 1195 1196
Store 1194(r06) 1197
- 1199: 24(fvec2) Load 122(inFV2)
- 1200: 111 Load 124(inFM2x3)
- 1201: 36(fvec3) VectorTimesMatrix 1199 1200
+ 1199: 111 Load 124(inFM2x3)
+ 1200: 24(fvec2) Load 122(inFV2)
+ 1201: 36(fvec3) MatrixTimesVector 1199 1200
Store 1198(r07) 1201
- 1203: 36(fvec3) Load 123(inFV3)
- 1204: 113 Load 125(inFM3x2)
- 1205: 24(fvec2) VectorTimesMatrix 1203 1204
+ 1203: 113 Load 125(inFM3x2)
+ 1204: 36(fvec3) Load 123(inFV3)
+ 1205: 24(fvec2) MatrixTimesVector 1203 1204
Store 1202(r08) 1205
- 1207: 111 Load 124(inFM2x3)
- 1208: 36(fvec3) Load 123(inFV3)
- 1209: 24(fvec2) MatrixTimesVector 1207 1208
+ 1207: 36(fvec3) Load 123(inFV3)
+ 1208: 111 Load 124(inFM2x3)
+ 1209: 24(fvec2) VectorTimesMatrix 1207 1208
Store 1206(r09) 1209
- 1211: 113 Load 125(inFM3x2)
- 1212: 24(fvec2) Load 122(inFV2)
- 1213: 36(fvec3) MatrixTimesVector 1211 1212
+ 1211: 24(fvec2) Load 122(inFV2)
+ 1212: 113 Load 125(inFM3x2)
+ 1213: 36(fvec3) VectorTimesMatrix 1211 1212
Store 1210(r10) 1213
- 1215: 111 Load 124(inFM2x3)
- 1216: 6(float) Load 120(inF0)
- 1217: 111 MatrixTimesScalar 1215 1216
+ 1215: 6(float) Load 120(inF0)
+ 1216: 111 Load 124(inFM2x3)
+ 1217: 111 MatrixTimesScalar 1216 1215
Store 1214(r11) 1217
- 1219: 113 Load 125(inFM3x2)
- 1220: 6(float) Load 120(inF0)
- 1221: 113 MatrixTimesScalar 1219 1220
+ 1219: 6(float) Load 120(inF0)
+ 1220: 113 Load 125(inFM3x2)
+ 1221: 113 MatrixTimesScalar 1220 1219
Store 1218(r12) 1221
- 1223: 111 Load 124(inFM2x3)
- 1224: 113 Load 125(inFM3x2)
+ 1223: 113 Load 125(inFM3x2)
+ 1224: 111 Load 124(inFM2x3)
1225: 60 MatrixTimesMatrix 1223 1224
Store 1222(r13) 1225
- 1227: 111 Load 124(inFM2x3)
- 1228: 68 Load 126(inFM3x3)
+ 1227: 68 Load 126(inFM3x3)
+ 1228: 111 Load 124(inFM2x3)
1229: 111 MatrixTimesMatrix 1227 1228
Store 1226(r14) 1229
- 1231: 111 Load 124(inFM2x3)
- 1232: 115 Load 127(inFM3x4)
+ 1231: 115 Load 127(inFM3x4)
+ 1232: 111 Load 124(inFM2x3)
1233: 117 MatrixTimesMatrix 1231 1232
Store 1230(r15) 1233
- 1235: 113 Load 125(inFM3x2)
- 1236: 117 Load 128(inFM2x4)
+ 1235: 117 Load 128(inFM2x4)
+ 1236: 113 Load 125(inFM3x2)
1237: 115 MatrixTimesMatrix 1235 1236
Store 1234(r16) 1237
Return
diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out
new file mode 100755
index 0000000..4455385
--- /dev/null
+++ b/Test/baseResults/hlsl.layout.frag.out
@@ -0,0 +1,137 @@
+hlsl.layout.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:16 Function Parameters:
+0:16 'input' (in 4-component vector of float)
+0:? Sequence
+0:17 Branch: Return with expression
+0:17 add (temp 4-component vector of float)
+0:17 add (temp 4-component vector of float)
+0:17 add (temp 4-component vector of float)
+0:17 'input' (in 4-component vector of float)
+0:17 v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:17 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
+0:17 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:17 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:17 Constant:
+0:17 0 (const uint)
+0:? Linker Objects
+0:? 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:? 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:? 'specConst' (specialization-constant const int)
+0:? 10 (const int)
+0:? 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:16 Function Parameters:
+0:16 'input' (in 4-component vector of float)
+0:? Sequence
+0:17 Branch: Return with expression
+0:17 add (temp 4-component vector of float)
+0:17 add (temp 4-component vector of float)
+0:17 add (temp 4-component vector of float)
+0:17 'input' (in 4-component vector of float)
+0:17 v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:17 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
+0:17 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:17 Constant:
+0:17 0 (const uint)
+0:17 v1PostLayout: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
+0:17 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+0:17 Constant:
+0:17 0 (const uint)
+0:? Linker Objects
+0:? 'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
+0:? 'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
+0:? 'specConst' (specialization-constant const int)
+0:? 10 (const int)
+0:? 'anon@2' (layout(set=4 binding=7 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1PostLayout})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 39
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 11 "PixelShaderFunction(vf4;"
+ Name 10 "input"
+ Name 14 ""
+ MemberName 14 0 "v1"
+ Name 16 ""
+ Name 23 ""
+ MemberName 23 0 "v5"
+ Name 25 ""
+ Name 30 ""
+ MemberName 30 0 "v1PostLayout"
+ Name 32 ""
+ MemberDecorate 14 0 Offset 16
+ Decorate 14 BufferBlock
+ Decorate 16 DescriptorSet 3
+ Decorate 16 Binding 5
+ MemberDecorate 23 0 Offset 0
+ Decorate 23 BufferBlock
+ MemberDecorate 30 0 Offset 16
+ Decorate 30 BufferBlock
+ Decorate 32 DescriptorSet 4
+ Decorate 32 Binding 7
+ Decorate 38 SpecId 17
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 14: TypeStruct 7(fvec4)
+ 15: TypePointer Uniform 14(struct)
+ 16: 15(ptr) Variable Uniform
+ 17: TypeInt 32 1
+ 18: 17(int) Constant 0
+ 19: TypePointer Uniform 7(fvec4)
+ 23: TypeStruct 7(fvec4)
+ 24: TypePointer PushConstant 23(struct)
+ 25: 24(ptr) Variable PushConstant
+ 26: TypePointer PushConstant 7(fvec4)
+ 30: TypeStruct 7(fvec4)
+ 31: TypePointer Uniform 30(struct)
+ 32: 31(ptr) Variable Uniform
+ 38: 17(int) SpecConstant 10
+ 4(main): 2 Function None 3
+ 5: Label
+ FunctionEnd
+11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9
+ 10(input): 8(ptr) FunctionParameter
+ 12: Label
+ 13: 7(fvec4) Load 10(input)
+ 20: 19(ptr) AccessChain 16 18
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 13 21
+ 27: 26(ptr) AccessChain 25 18
+ 28: 7(fvec4) Load 27
+ 29: 7(fvec4) FAdd 22 28
+ 33: 19(ptr) AccessChain 32 18
+ 34: 7(fvec4) Load 33
+ 35: 7(fvec4) FAdd 29 34
+ ReturnValue 35
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index c9f4c91..051f201 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:57 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:32 textureFetch (global 4-component vector of float)
@@ -73,7 +73,7 @@
0:49 'o2' (uniform 2-component vector of int)
0:51 move second child to first child (temp 4-component vector of float)
0:51 Color: direct index for structure (temp 4-component vector of float)
-0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:51 Constant:
0:51 0 (const int)
0:51 Constant:
@@ -82,14 +82,27 @@
0:51 1.000000
0:51 1.000000
0:52 move second child to first child (temp float)
-0:52 Depth: direct index for structure (temp float FragDepth)
-0:52 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:52 Depth: direct index for structure (temp float)
+0:52 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
0:52 1.000000
-0:54 Branch: Return with expression
-0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:54 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:54 Color: direct index for structure (temp 4-component vector of float)
+0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:54 Constant:
+0:54 0 (const int)
+0:54 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:54 Depth: direct index for structure (temp float)
+0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:54 Constant:
+0:54 1 (const int)
+0:54 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex2dmsf4' (uniform texture2DMS)
@@ -106,6 +119,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -114,7 +129,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:57 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:32 textureFetch (global 4-component vector of float)
@@ -185,7 +200,7 @@
0:49 'o2' (uniform 2-component vector of int)
0:51 move second child to first child (temp 4-component vector of float)
0:51 Color: direct index for structure (temp 4-component vector of float)
-0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:51 Constant:
0:51 0 (const int)
0:51 Constant:
@@ -194,14 +209,27 @@
0:51 1.000000
0:51 1.000000
0:52 move second child to first child (temp float)
-0:52 Depth: direct index for structure (temp float FragDepth)
-0:52 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:52 Depth: direct index for structure (temp float)
+0:52 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
0:52 1.000000
-0:54 Branch: Return with expression
-0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:54 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:54 Color: direct index for structure (temp 4-component vector of float)
+0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:54 Constant:
+0:54 0 (const int)
+0:54 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:54 Depth: direct index for structure (temp float)
+0:54 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:54 Constant:
+0:54 1 (const int)
+0:54 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex2dmsf4' (uniform texture2DMS)
@@ -218,19 +246,20 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 103
+// Id's are bound by 110
Capability Shader
Capability ImageGatherExtended
Capability ImageMSArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 92 96
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "g_tTex2dmsf4"
Name 14 "c2"
@@ -245,21 +274,24 @@
MemberName 80(PS_OUTPUT) 0 "Color"
MemberName 80(PS_OUTPUT) 1 "Depth"
Name 82 "psout"
- Name 95 "g_sSamp"
- Name 97 "c1"
- Name 99 "c4"
- Name 100 "o1"
- Name 101 "o3"
- Name 102 "o4"
+ Name 92 "Color"
+ Name 96 "Depth"
+ Name 102 "g_sSamp"
+ Name 104 "c1"
+ Name 106 "c4"
+ Name 107 "o1"
+ Name 108 "o3"
+ Name 109 "o4"
Decorate 9(g_tTex2dmsf4) DescriptorSet 0
Decorate 21(g_tTex2dmsi4) DescriptorSet 0
Decorate 29(g_tTex2dmsu4) DescriptorSet 0
Decorate 49(g_tTex2dmsf4a) DescriptorSet 0
Decorate 58(g_tTex2dmsi4a) DescriptorSet 0
Decorate 64(g_tTex2dmsu4a) DescriptorSet 0
- MemberDecorate 80(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 95(g_sSamp) DescriptorSet 0
- Decorate 95(g_sSamp) Binding 0
+ Decorate 92(Color) Location 0
+ Decorate 96(Depth) BuiltIn FragDepth
+ Decorate 102(g_sSamp) DescriptorSet 0
+ Decorate 102(g_sSamp) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -302,16 +334,20 @@
86: TypePointer Function 17(fvec4)
88: 11(int) Constant 1
89: TypePointer Function 6(float)
- 93: TypeSampler
- 94: TypePointer UniformConstant 93
- 95(g_sSamp): 94(ptr) Variable UniformConstant
- 96: TypePointer UniformConstant 11(int)
- 97(c1): 96(ptr) Variable UniformConstant
- 98: TypePointer UniformConstant 24(ivec4)
- 99(c4): 98(ptr) Variable UniformConstant
- 100(o1): 96(ptr) Variable UniformConstant
- 101(o3): 52(ptr) Variable UniformConstant
- 102(o4): 98(ptr) Variable UniformConstant
+ 91: TypePointer Output 17(fvec4)
+ 92(Color): 91(ptr) Variable Output
+ 95: TypePointer Output 6(float)
+ 96(Depth): 95(ptr) Variable Output
+ 100: TypeSampler
+ 101: TypePointer UniformConstant 100
+ 102(g_sSamp): 101(ptr) Variable UniformConstant
+ 103: TypePointer UniformConstant 11(int)
+ 104(c1): 103(ptr) Variable UniformConstant
+ 105: TypePointer UniformConstant 24(ivec4)
+ 106(c4): 105(ptr) Variable UniformConstant
+ 107(o1): 103(ptr) Variable UniformConstant
+ 108(o3): 52(ptr) Variable UniformConstant
+ 109(o4): 105(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
82(psout): 81(ptr) Variable Function
@@ -361,6 +397,11 @@
Store 87 85
90: 89(ptr) AccessChain 82(psout) 88
Store 90 84
- 91:80(PS_OUTPUT) Load 82(psout)
- ReturnValue 91
+ 93: 86(ptr) AccessChain 82(psout) 83
+ 94: 17(fvec4) Load 93
+ Store 92(Color) 94
+ 97: 89(ptr) AccessChain 82(psout) 88
+ 98: 6(float) Load 97
+ Store 96(Depth) 98
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index ea7e347..3723883 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetch (global 4-component vector of float)
@@ -91,7 +91,7 @@
0:59 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
0:67 Color: direct index for structure (temp 4-component vector of float)
-0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67 Constant:
0:67 0 (const int)
0:67 Constant:
@@ -100,14 +100,27 @@
0:67 1.000000
0:67 1.000000
0:68 move second child to first child (temp float)
-0:68 Depth: direct index for structure (temp float FragDepth)
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 1.000000
-0:70 Branch: Return with expression
-0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:70 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:70 Color: direct index for structure (temp 4-component vector of float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 0 (const int)
+0:70 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:70 Depth: direct index for structure (temp float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 1 (const int)
+0:70 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -139,6 +152,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -147,7 +162,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetch (global 4-component vector of float)
@@ -236,7 +251,7 @@
0:59 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
0:67 Color: direct index for structure (temp 4-component vector of float)
-0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:67 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:67 Constant:
0:67 0 (const int)
0:67 Constant:
@@ -245,14 +260,27 @@
0:67 1.000000
0:67 1.000000
0:68 move second child to first child (temp float)
-0:68 Depth: direct index for structure (temp float FragDepth)
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 1.000000
-0:70 Branch: Return with expression
-0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:70 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:70 Color: direct index for structure (temp 4-component vector of float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 0 (const int)
+0:70 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:70 Depth: direct index for structure (temp float)
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:70 Constant:
+0:70 1 (const int)
+0:70 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -284,19 +312,20 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 143
+// Id's are bound by 150
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 87 91
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "g_tTex1df4a"
Name 14 "c3"
@@ -310,53 +339,56 @@
MemberName 75(PS_OUTPUT) 0 "Color"
MemberName 75(PS_OUTPUT) 1 "Depth"
Name 77 "psout"
- Name 90 "g_sSamp"
- Name 93 "g_tTex1df4"
- Name 96 "g_tTex1di4"
- Name 99 "g_tTex1du4"
- Name 102 "g_tTex2df4"
- Name 105 "g_tTex2di4"
- Name 108 "g_tTex2du4"
- Name 111 "g_tTex3df4"
- Name 114 "g_tTex3di4"
- Name 117 "g_tTex3du4"
- Name 120 "g_tTexcdf4"
- Name 123 "g_tTexcdi4"
- Name 126 "g_tTexcdu4"
- Name 129 "g_tTexcdf4a"
- Name 132 "g_tTexcdi4a"
- Name 135 "g_tTexcdu4a"
- Name 136 "c1"
- Name 138 "c2"
- Name 139 "o1"
- Name 140 "o2"
- Name 141 "o3"
- Name 142 "o4"
+ Name 87 "Color"
+ Name 91 "Depth"
+ Name 97 "g_sSamp"
+ Name 100 "g_tTex1df4"
+ Name 103 "g_tTex1di4"
+ Name 106 "g_tTex1du4"
+ Name 109 "g_tTex2df4"
+ Name 112 "g_tTex2di4"
+ Name 115 "g_tTex2du4"
+ Name 118 "g_tTex3df4"
+ Name 121 "g_tTex3di4"
+ Name 124 "g_tTex3du4"
+ Name 127 "g_tTexcdf4"
+ Name 130 "g_tTexcdi4"
+ Name 133 "g_tTexcdu4"
+ Name 136 "g_tTexcdf4a"
+ Name 139 "g_tTexcdi4a"
+ Name 142 "g_tTexcdu4a"
+ Name 143 "c1"
+ Name 145 "c2"
+ Name 146 "o1"
+ Name 147 "o2"
+ Name 148 "o3"
+ Name 149 "o4"
Decorate 9(g_tTex1df4a) DescriptorSet 0
Decorate 27(g_tTex1di4a) DescriptorSet 0
Decorate 37(g_tTex1du4a) DescriptorSet 0
Decorate 47(g_tTex2df4a) DescriptorSet 0
Decorate 59(g_tTex2di4a) DescriptorSet 0
Decorate 68(g_tTex2du4a) DescriptorSet 0
- MemberDecorate 75(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 90(g_sSamp) DescriptorSet 0
- Decorate 90(g_sSamp) Binding 0
- Decorate 93(g_tTex1df4) DescriptorSet 0
- Decorate 93(g_tTex1df4) Binding 0
- Decorate 96(g_tTex1di4) DescriptorSet 0
- Decorate 99(g_tTex1du4) DescriptorSet 0
- Decorate 102(g_tTex2df4) DescriptorSet 0
- Decorate 105(g_tTex2di4) DescriptorSet 0
- Decorate 108(g_tTex2du4) DescriptorSet 0
- Decorate 111(g_tTex3df4) DescriptorSet 0
- Decorate 114(g_tTex3di4) DescriptorSet 0
- Decorate 117(g_tTex3du4) DescriptorSet 0
- Decorate 120(g_tTexcdf4) DescriptorSet 0
- Decorate 123(g_tTexcdi4) DescriptorSet 0
- Decorate 126(g_tTexcdu4) DescriptorSet 0
- Decorate 129(g_tTexcdf4a) DescriptorSet 0
- Decorate 132(g_tTexcdi4a) DescriptorSet 0
- Decorate 135(g_tTexcdu4a) DescriptorSet 0
+ Decorate 87(Color) Location 0
+ Decorate 91(Depth) BuiltIn FragDepth
+ Decorate 97(g_sSamp) DescriptorSet 0
+ Decorate 97(g_sSamp) Binding 0
+ Decorate 100(g_tTex1df4) DescriptorSet 0
+ Decorate 100(g_tTex1df4) Binding 0
+ Decorate 103(g_tTex1di4) DescriptorSet 0
+ Decorate 106(g_tTex1du4) DescriptorSet 0
+ Decorate 109(g_tTex2df4) DescriptorSet 0
+ Decorate 112(g_tTex2di4) DescriptorSet 0
+ Decorate 115(g_tTex2du4) DescriptorSet 0
+ Decorate 118(g_tTex3df4) DescriptorSet 0
+ Decorate 121(g_tTex3di4) DescriptorSet 0
+ Decorate 124(g_tTex3du4) DescriptorSet 0
+ Decorate 127(g_tTexcdf4) DescriptorSet 0
+ Decorate 130(g_tTexcdi4) DescriptorSet 0
+ Decorate 133(g_tTexcdu4) DescriptorSet 0
+ Decorate 136(g_tTexcdf4a) DescriptorSet 0
+ Decorate 139(g_tTexcdi4a) DescriptorSet 0
+ Decorate 142(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -400,61 +432,65 @@
81: TypePointer Function 23(fvec4)
83: 11(int) Constant 1
84: TypePointer Function 6(float)
- 88: TypeSampler
- 89: TypePointer UniformConstant 88
- 90(g_sSamp): 89(ptr) Variable UniformConstant
- 91: TypeImage 6(float) 1D sampled format:Unknown
- 92: TypePointer UniformConstant 91
- 93(g_tTex1df4): 92(ptr) Variable UniformConstant
- 94: TypeImage 11(int) 1D sampled format:Unknown
- 95: TypePointer UniformConstant 94
- 96(g_tTex1di4): 95(ptr) Variable UniformConstant
- 97: TypeImage 18(int) 1D sampled format:Unknown
- 98: TypePointer UniformConstant 97
- 99(g_tTex1du4): 98(ptr) Variable UniformConstant
- 100: TypeImage 6(float) 2D sampled format:Unknown
- 101: TypePointer UniformConstant 100
- 102(g_tTex2df4): 101(ptr) Variable UniformConstant
- 103: TypeImage 11(int) 2D sampled format:Unknown
- 104: TypePointer UniformConstant 103
- 105(g_tTex2di4): 104(ptr) Variable UniformConstant
- 106: TypeImage 18(int) 2D sampled format:Unknown
- 107: TypePointer UniformConstant 106
- 108(g_tTex2du4): 107(ptr) Variable UniformConstant
- 109: TypeImage 6(float) 3D sampled format:Unknown
- 110: TypePointer UniformConstant 109
- 111(g_tTex3df4): 110(ptr) Variable UniformConstant
- 112: TypeImage 11(int) 3D sampled format:Unknown
- 113: TypePointer UniformConstant 112
- 114(g_tTex3di4): 113(ptr) Variable UniformConstant
- 115: TypeImage 18(int) 3D sampled format:Unknown
- 116: TypePointer UniformConstant 115
- 117(g_tTex3du4): 116(ptr) Variable UniformConstant
- 118: TypeImage 6(float) Cube sampled format:Unknown
- 119: TypePointer UniformConstant 118
- 120(g_tTexcdf4): 119(ptr) Variable UniformConstant
- 121: TypeImage 11(int) Cube sampled format:Unknown
- 122: TypePointer UniformConstant 121
- 123(g_tTexcdi4): 122(ptr) Variable UniformConstant
- 124: TypeImage 18(int) Cube sampled format:Unknown
- 125: TypePointer UniformConstant 124
- 126(g_tTexcdu4): 125(ptr) Variable UniformConstant
- 127: TypeImage 6(float) Cube array sampled format:Unknown
- 128: TypePointer UniformConstant 127
-129(g_tTexcdf4a): 128(ptr) Variable UniformConstant
- 130: TypeImage 11(int) Cube array sampled format:Unknown
- 131: TypePointer UniformConstant 130
-132(g_tTexcdi4a): 131(ptr) Variable UniformConstant
- 133: TypeImage 18(int) Cube array sampled format:Unknown
- 134: TypePointer UniformConstant 133
-135(g_tTexcdu4a): 134(ptr) Variable UniformConstant
- 136(c1): 20(ptr) Variable UniformConstant
- 137: TypePointer UniformConstant 15(ivec2)
- 138(c2): 137(ptr) Variable UniformConstant
- 139(o1): 20(ptr) Variable UniformConstant
- 140(o2): 137(ptr) Variable UniformConstant
- 141(o3): 13(ptr) Variable UniformConstant
- 142(o4): 49(ptr) Variable UniformConstant
+ 86: TypePointer Output 23(fvec4)
+ 87(Color): 86(ptr) Variable Output
+ 90: TypePointer Output 6(float)
+ 91(Depth): 90(ptr) Variable Output
+ 95: TypeSampler
+ 96: TypePointer UniformConstant 95
+ 97(g_sSamp): 96(ptr) Variable UniformConstant
+ 98: TypeImage 6(float) 1D sampled format:Unknown
+ 99: TypePointer UniformConstant 98
+ 100(g_tTex1df4): 99(ptr) Variable UniformConstant
+ 101: TypeImage 11(int) 1D sampled format:Unknown
+ 102: TypePointer UniformConstant 101
+ 103(g_tTex1di4): 102(ptr) Variable UniformConstant
+ 104: TypeImage 18(int) 1D sampled format:Unknown
+ 105: TypePointer UniformConstant 104
+ 106(g_tTex1du4): 105(ptr) Variable UniformConstant
+ 107: TypeImage 6(float) 2D sampled format:Unknown
+ 108: TypePointer UniformConstant 107
+ 109(g_tTex2df4): 108(ptr) Variable UniformConstant
+ 110: TypeImage 11(int) 2D sampled format:Unknown
+ 111: TypePointer UniformConstant 110
+ 112(g_tTex2di4): 111(ptr) Variable UniformConstant
+ 113: TypeImage 18(int) 2D sampled format:Unknown
+ 114: TypePointer UniformConstant 113
+ 115(g_tTex2du4): 114(ptr) Variable UniformConstant
+ 116: TypeImage 6(float) 3D sampled format:Unknown
+ 117: TypePointer UniformConstant 116
+ 118(g_tTex3df4): 117(ptr) Variable UniformConstant
+ 119: TypeImage 11(int) 3D sampled format:Unknown
+ 120: TypePointer UniformConstant 119
+ 121(g_tTex3di4): 120(ptr) Variable UniformConstant
+ 122: TypeImage 18(int) 3D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex3du4): 123(ptr) Variable UniformConstant
+ 125: TypeImage 6(float) Cube sampled format:Unknown
+ 126: TypePointer UniformConstant 125
+ 127(g_tTexcdf4): 126(ptr) Variable UniformConstant
+ 128: TypeImage 11(int) Cube sampled format:Unknown
+ 129: TypePointer UniformConstant 128
+ 130(g_tTexcdi4): 129(ptr) Variable UniformConstant
+ 131: TypeImage 18(int) Cube sampled format:Unknown
+ 132: TypePointer UniformConstant 131
+ 133(g_tTexcdu4): 132(ptr) Variable UniformConstant
+ 134: TypeImage 6(float) Cube array sampled format:Unknown
+ 135: TypePointer UniformConstant 134
+136(g_tTexcdf4a): 135(ptr) Variable UniformConstant
+ 137: TypeImage 11(int) Cube array sampled format:Unknown
+ 138: TypePointer UniformConstant 137
+139(g_tTexcdi4a): 138(ptr) Variable UniformConstant
+ 140: TypeImage 18(int) Cube array sampled format:Unknown
+ 141: TypePointer UniformConstant 140
+142(g_tTexcdu4a): 141(ptr) Variable UniformConstant
+ 143(c1): 20(ptr) Variable UniformConstant
+ 144: TypePointer UniformConstant 15(ivec2)
+ 145(c2): 144(ptr) Variable UniformConstant
+ 146(o1): 20(ptr) Variable UniformConstant
+ 147(o2): 144(ptr) Variable UniformConstant
+ 148(o3): 13(ptr) Variable UniformConstant
+ 149(o4): 49(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
77(psout): 76(ptr) Variable Function
@@ -498,6 +534,11 @@
Store 82 80
85: 84(ptr) AccessChain 77(psout) 83
Store 85 79
- 86:75(PS_OUTPUT) Load 77(psout)
- ReturnValue 86
+ 88: 81(ptr) AccessChain 77(psout) 78
+ 89: 23(fvec4) Load 88
+ Store 87(Color) 89
+ 92: 84(ptr) AccessChain 77(psout) 83
+ 93: 6(float) Load 92
+ Store 91(Depth) 93
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index 54f964e..41d44ee 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:77 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetch (global 4-component vector of float)
@@ -124,7 +124,7 @@
0:64 3 (const int)
0:72 move second child to first child (temp 4-component vector of float)
0:72 Color: direct index for structure (temp 4-component vector of float)
-0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:72 Constant:
0:72 0 (const int)
0:72 Constant:
@@ -133,14 +133,27 @@
0:72 1.000000
0:72 1.000000
0:73 move second child to first child (temp float)
-0:73 Depth: direct index for structure (temp float FragDepth)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 Depth: direct index for structure (temp float)
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 1 (const int)
0:73 Constant:
0:73 1.000000
-0:75 Branch: Return with expression
-0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:75 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:75 Color: direct index for structure (temp 4-component vector of float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 0 (const int)
+0:75 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:75 Depth: direct index for structure (temp float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 1 (const int)
+0:75 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -172,6 +185,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -180,7 +195,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:77 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetch (global 4-component vector of float)
@@ -302,7 +317,7 @@
0:64 3 (const int)
0:72 move second child to first child (temp 4-component vector of float)
0:72 Color: direct index for structure (temp 4-component vector of float)
-0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:72 Constant:
0:72 0 (const int)
0:72 Constant:
@@ -311,14 +326,27 @@
0:72 1.000000
0:72 1.000000
0:73 move second child to first child (temp float)
-0:73 Depth: direct index for structure (temp float FragDepth)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 Depth: direct index for structure (temp float)
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 1 (const int)
0:73 Constant:
0:73 1.000000
-0:75 Branch: Return with expression
-0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:75 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:75 Color: direct index for structure (temp 4-component vector of float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 0 (const int)
+0:75 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:75 Depth: direct index for structure (temp float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 1 (const int)
+0:75 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -350,19 +378,20 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 163
+// Id's are bound by 170
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 118 122
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "g_tTex1df4"
Name 14 "c2"
@@ -380,24 +409,26 @@
MemberName 106(PS_OUTPUT) 0 "Color"
MemberName 106(PS_OUTPUT) 1 "Depth"
Name 108 "psout"
- Name 121 "g_sSamp"
- Name 124 "g_tTexcdf4"
- Name 127 "g_tTexcdi4"
- Name 130 "g_tTexcdu4"
- Name 133 "g_tTex1df4a"
- Name 136 "g_tTex1di4a"
- Name 139 "g_tTex1du4a"
- Name 142 "g_tTex2df4a"
- Name 145 "g_tTex2di4a"
- Name 148 "g_tTex2du4a"
- Name 151 "g_tTexcdf4a"
- Name 154 "g_tTexcdi4a"
- Name 157 "g_tTexcdu4a"
- Name 158 "c1"
- Name 159 "o1"
- Name 160 "o2"
- Name 161 "o3"
- Name 162 "o4"
+ Name 118 "Color"
+ Name 122 "Depth"
+ Name 128 "g_sSamp"
+ Name 131 "g_tTexcdf4"
+ Name 134 "g_tTexcdi4"
+ Name 137 "g_tTexcdu4"
+ Name 140 "g_tTex1df4a"
+ Name 143 "g_tTex1di4a"
+ Name 146 "g_tTex1du4a"
+ Name 149 "g_tTex2df4a"
+ Name 152 "g_tTex2di4a"
+ Name 155 "g_tTex2du4a"
+ Name 158 "g_tTexcdf4a"
+ Name 161 "g_tTexcdi4a"
+ Name 164 "g_tTexcdu4a"
+ Name 165 "c1"
+ Name 166 "o1"
+ Name 167 "o2"
+ Name 168 "o3"
+ Name 169 "o4"
Decorate 9(g_tTex1df4) DescriptorSet 0
Decorate 9(g_tTex1df4) Binding 0
Decorate 27(g_tTex1di4) DescriptorSet 0
@@ -408,21 +439,22 @@
Decorate 78(g_tTex3df4) DescriptorSet 0
Decorate 90(g_tTex3di4) DescriptorSet 0
Decorate 99(g_tTex3du4) DescriptorSet 0
- MemberDecorate 106(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 121(g_sSamp) DescriptorSet 0
- Decorate 121(g_sSamp) Binding 0
- Decorate 124(g_tTexcdf4) DescriptorSet 0
- Decorate 127(g_tTexcdi4) DescriptorSet 0
- Decorate 130(g_tTexcdu4) DescriptorSet 0
- Decorate 133(g_tTex1df4a) DescriptorSet 0
- Decorate 136(g_tTex1di4a) DescriptorSet 0
- Decorate 139(g_tTex1du4a) DescriptorSet 0
- Decorate 142(g_tTex2df4a) DescriptorSet 0
- Decorate 145(g_tTex2di4a) DescriptorSet 0
- Decorate 148(g_tTex2du4a) DescriptorSet 0
- Decorate 151(g_tTexcdf4a) DescriptorSet 0
- Decorate 154(g_tTexcdi4a) DescriptorSet 0
- Decorate 157(g_tTexcdu4a) DescriptorSet 0
+ Decorate 118(Color) Location 0
+ Decorate 122(Depth) BuiltIn FragDepth
+ Decorate 128(g_sSamp) DescriptorSet 0
+ Decorate 128(g_sSamp) Binding 0
+ Decorate 131(g_tTexcdf4) DescriptorSet 0
+ Decorate 134(g_tTexcdi4) DescriptorSet 0
+ Decorate 137(g_tTexcdu4) DescriptorSet 0
+ Decorate 140(g_tTex1df4a) DescriptorSet 0
+ Decorate 143(g_tTex1di4a) DescriptorSet 0
+ Decorate 146(g_tTex1du4a) DescriptorSet 0
+ Decorate 149(g_tTex2df4a) DescriptorSet 0
+ Decorate 152(g_tTex2di4a) DescriptorSet 0
+ Decorate 155(g_tTex2du4a) DescriptorSet 0
+ Decorate 158(g_tTexcdf4a) DescriptorSet 0
+ Decorate 161(g_tTexcdi4a) DescriptorSet 0
+ Decorate 164(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -479,50 +511,54 @@
112: TypePointer Function 23(fvec4)
114: 11(int) Constant 1
115: TypePointer Function 6(float)
- 119: TypeSampler
- 120: TypePointer UniformConstant 119
- 121(g_sSamp): 120(ptr) Variable UniformConstant
- 122: TypeImage 6(float) Cube sampled format:Unknown
- 123: TypePointer UniformConstant 122
- 124(g_tTexcdf4): 123(ptr) Variable UniformConstant
- 125: TypeImage 11(int) Cube sampled format:Unknown
- 126: TypePointer UniformConstant 125
- 127(g_tTexcdi4): 126(ptr) Variable UniformConstant
- 128: TypeImage 15(int) Cube sampled format:Unknown
- 129: TypePointer UniformConstant 128
- 130(g_tTexcdu4): 129(ptr) Variable UniformConstant
- 131: TypeImage 6(float) 1D array sampled format:Unknown
- 132: TypePointer UniformConstant 131
-133(g_tTex1df4a): 132(ptr) Variable UniformConstant
- 134: TypeImage 11(int) 1D array sampled format:Unknown
- 135: TypePointer UniformConstant 134
-136(g_tTex1di4a): 135(ptr) Variable UniformConstant
- 137: TypeImage 15(int) 1D array sampled format:Unknown
- 138: TypePointer UniformConstant 137
-139(g_tTex1du4a): 138(ptr) Variable UniformConstant
- 140: TypeImage 6(float) 2D array sampled format:Unknown
- 141: TypePointer UniformConstant 140
-142(g_tTex2df4a): 141(ptr) Variable UniformConstant
- 143: TypeImage 11(int) 2D array sampled format:Unknown
- 144: TypePointer UniformConstant 143
-145(g_tTex2di4a): 144(ptr) Variable UniformConstant
- 146: TypeImage 15(int) 2D array sampled format:Unknown
- 147: TypePointer UniformConstant 146
-148(g_tTex2du4a): 147(ptr) Variable UniformConstant
- 149: TypeImage 6(float) Cube array sampled format:Unknown
- 150: TypePointer UniformConstant 149
-151(g_tTexcdf4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 11(int) Cube array sampled format:Unknown
- 153: TypePointer UniformConstant 152
-154(g_tTexcdi4a): 153(ptr) Variable UniformConstant
- 155: TypeImage 15(int) Cube array sampled format:Unknown
- 156: TypePointer UniformConstant 155
-157(g_tTexcdu4a): 156(ptr) Variable UniformConstant
- 158(c1): 17(ptr) Variable UniformConstant
- 159(o1): 17(ptr) Variable UniformConstant
- 160(o2): 13(ptr) Variable UniformConstant
- 161(o3): 50(ptr) Variable UniformConstant
- 162(o4): 80(ptr) Variable UniformConstant
+ 117: TypePointer Output 23(fvec4)
+ 118(Color): 117(ptr) Variable Output
+ 121: TypePointer Output 6(float)
+ 122(Depth): 121(ptr) Variable Output
+ 126: TypeSampler
+ 127: TypePointer UniformConstant 126
+ 128(g_sSamp): 127(ptr) Variable UniformConstant
+ 129: TypeImage 6(float) Cube sampled format:Unknown
+ 130: TypePointer UniformConstant 129
+ 131(g_tTexcdf4): 130(ptr) Variable UniformConstant
+ 132: TypeImage 11(int) Cube sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+ 134(g_tTexcdi4): 133(ptr) Variable UniformConstant
+ 135: TypeImage 15(int) Cube sampled format:Unknown
+ 136: TypePointer UniformConstant 135
+ 137(g_tTexcdu4): 136(ptr) Variable UniformConstant
+ 138: TypeImage 6(float) 1D array sampled format:Unknown
+ 139: TypePointer UniformConstant 138
+140(g_tTex1df4a): 139(ptr) Variable UniformConstant
+ 141: TypeImage 11(int) 1D array sampled format:Unknown
+ 142: TypePointer UniformConstant 141
+143(g_tTex1di4a): 142(ptr) Variable UniformConstant
+ 144: TypeImage 15(int) 1D array sampled format:Unknown
+ 145: TypePointer UniformConstant 144
+146(g_tTex1du4a): 145(ptr) Variable UniformConstant
+ 147: TypeImage 6(float) 2D array sampled format:Unknown
+ 148: TypePointer UniformConstant 147
+149(g_tTex2df4a): 148(ptr) Variable UniformConstant
+ 150: TypeImage 11(int) 2D array sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+152(g_tTex2di4a): 151(ptr) Variable UniformConstant
+ 153: TypeImage 15(int) 2D array sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+155(g_tTex2du4a): 154(ptr) Variable UniformConstant
+ 156: TypeImage 6(float) Cube array sampled format:Unknown
+ 157: TypePointer UniformConstant 156
+158(g_tTexcdf4a): 157(ptr) Variable UniformConstant
+ 159: TypeImage 11(int) Cube array sampled format:Unknown
+ 160: TypePointer UniformConstant 159
+161(g_tTexcdi4a): 160(ptr) Variable UniformConstant
+ 162: TypeImage 15(int) Cube array sampled format:Unknown
+ 163: TypePointer UniformConstant 162
+164(g_tTexcdu4a): 163(ptr) Variable UniformConstant
+ 165(c1): 17(ptr) Variable UniformConstant
+ 166(o1): 17(ptr) Variable UniformConstant
+ 167(o2): 13(ptr) Variable UniformConstant
+ 168(o3): 50(ptr) Variable UniformConstant
+ 169(o4): 80(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
108(psout): 107(ptr) Variable Function
@@ -584,6 +620,11 @@
Store 113 111
116: 115(ptr) AccessChain 108(psout) 114
Store 116 110
- 117:106(PS_OUTPUT) Load 108(psout)
- ReturnValue 117
+ 119: 112(ptr) AccessChain 108(psout) 109
+ 120: 23(fvec4) Load 119
+ Store 118(Color) 120
+ 123: 115(ptr) AccessChain 108(psout) 114
+ 124: 6(float) Load 123
+ Store 122(Depth) 124
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index cd4fea5..62e6128 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -1,7 +1,7 @@
hlsl.load.basic.dx10.vert
Shader version: 450
0:? Sequence
-0:71 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:47 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:47 Function Parameters:
0:? Sequence
0:51 textureFetch (global 4-component vector of float)
@@ -122,8 +122,8 @@
0:63 Constant:
0:63 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
-0:67 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:67 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:67 Pos: direct index for structure (temp 4-component vector of float)
+0:67 'vsout' (temp structure{temp 4-component vector of float Pos})
0:67 Constant:
0:67 0 (const int)
0:? Constant:
@@ -131,8 +131,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:69 Branch: Return with expression
-0:69 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:69 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:69 Pos: direct index for structure (temp 4-component vector of float)
+0:69 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:69 Constant:
+0:69 0 (const int)
+0:69 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -164,6 +171,7 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Pos' (out 4-component vector of float Position)
Linked vertex stage:
@@ -171,7 +179,7 @@
Shader version: 450
0:? Sequence
-0:71 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:47 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:47 Function Parameters:
0:? Sequence
0:51 textureFetch (global 4-component vector of float)
@@ -292,8 +300,8 @@
0:63 Constant:
0:63 3 (const int)
0:67 move second child to first child (temp 4-component vector of float)
-0:67 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:67 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:67 Pos: direct index for structure (temp 4-component vector of float)
+0:67 'vsout' (temp structure{temp 4-component vector of float Pos})
0:67 Constant:
0:67 0 (const int)
0:? Constant:
@@ -301,8 +309,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:69 Branch: Return with expression
-0:69 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:69 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:69 Pos: direct index for structure (temp 4-component vector of float)
+0:69 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:69 Constant:
+0:69 0 (const int)
+0:69 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -334,18 +349,18 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Pos' (out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 160
+// Id's are bound by 163
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
- Source HLSL 450
+ EntryPoint Vertex 4 "main" 115
Name 4 "main"
Name 9 "g_tTex1df4"
Name 14 "c2"
@@ -362,24 +377,25 @@
Name 106 "VS_OUTPUT"
MemberName 106(VS_OUTPUT) 0 "Pos"
Name 108 "vsout"
- Name 118 "g_sSamp"
- Name 121 "g_tTexcdf4"
- Name 124 "g_tTexcdi4"
- Name 127 "g_tTexcdu4"
- Name 130 "g_tTex1df4a"
- Name 133 "g_tTex1di4a"
- Name 136 "g_tTex1du4a"
- Name 139 "g_tTex2df4a"
- Name 142 "g_tTex2di4a"
- Name 145 "g_tTex2du4a"
- Name 148 "g_tTexcdf4a"
- Name 151 "g_tTexcdi4a"
- Name 154 "g_tTexcdu4a"
- Name 155 "c1"
- Name 156 "o1"
- Name 157 "o2"
- Name 158 "o3"
- Name 159 "o4"
+ Name 115 "Pos"
+ Name 121 "g_sSamp"
+ Name 124 "g_tTexcdf4"
+ Name 127 "g_tTexcdi4"
+ Name 130 "g_tTexcdu4"
+ Name 133 "g_tTex1df4a"
+ Name 136 "g_tTex1di4a"
+ Name 139 "g_tTex1du4a"
+ Name 142 "g_tTex2df4a"
+ Name 145 "g_tTex2di4a"
+ Name 148 "g_tTex2du4a"
+ Name 151 "g_tTexcdf4a"
+ Name 154 "g_tTexcdi4a"
+ Name 157 "g_tTexcdu4a"
+ Name 158 "c1"
+ Name 159 "o1"
+ Name 160 "o2"
+ Name 161 "o3"
+ Name 162 "o4"
Decorate 9(g_tTex1df4) DescriptorSet 0
Decorate 9(g_tTex1df4) Binding 0
Decorate 27(g_tTex1di4) DescriptorSet 0
@@ -390,21 +406,21 @@
Decorate 78(g_tTex3df4) DescriptorSet 0
Decorate 90(g_tTex3di4) DescriptorSet 0
Decorate 99(g_tTex3du4) DescriptorSet 0
- MemberDecorate 106(VS_OUTPUT) 0 BuiltIn FragCoord
- Decorate 118(g_sSamp) DescriptorSet 0
- Decorate 118(g_sSamp) Binding 0
- Decorate 121(g_tTexcdf4) DescriptorSet 0
- Decorate 124(g_tTexcdi4) DescriptorSet 0
- Decorate 127(g_tTexcdu4) DescriptorSet 0
- Decorate 130(g_tTex1df4a) DescriptorSet 0
- Decorate 133(g_tTex1di4a) DescriptorSet 0
- Decorate 136(g_tTex1du4a) DescriptorSet 0
- Decorate 139(g_tTex2df4a) DescriptorSet 0
- Decorate 142(g_tTex2di4a) DescriptorSet 0
- Decorate 145(g_tTex2du4a) DescriptorSet 0
- Decorate 148(g_tTexcdf4a) DescriptorSet 0
- Decorate 151(g_tTexcdi4a) DescriptorSet 0
- Decorate 154(g_tTexcdu4a) DescriptorSet 0
+ Decorate 115(Pos) BuiltIn Position
+ Decorate 121(g_sSamp) DescriptorSet 0
+ Decorate 121(g_sSamp) Binding 0
+ Decorate 124(g_tTexcdf4) DescriptorSet 0
+ Decorate 127(g_tTexcdi4) DescriptorSet 0
+ Decorate 130(g_tTexcdu4) DescriptorSet 0
+ Decorate 133(g_tTex1df4a) DescriptorSet 0
+ Decorate 136(g_tTex1di4a) DescriptorSet 0
+ Decorate 139(g_tTex1du4a) DescriptorSet 0
+ Decorate 142(g_tTex2df4a) DescriptorSet 0
+ Decorate 145(g_tTex2di4a) DescriptorSet 0
+ Decorate 148(g_tTex2du4a) DescriptorSet 0
+ Decorate 151(g_tTexcdf4a) DescriptorSet 0
+ Decorate 154(g_tTexcdi4a) DescriptorSet 0
+ Decorate 157(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -459,50 +475,52 @@
110: 6(float) Constant 0
111: 23(fvec4) ConstantComposite 110 110 110 110
112: TypePointer Function 23(fvec4)
- 116: TypeSampler
- 117: TypePointer UniformConstant 116
- 118(g_sSamp): 117(ptr) Variable UniformConstant
- 119: TypeImage 6(float) Cube sampled format:Unknown
+ 114: TypePointer Output 23(fvec4)
+ 115(Pos): 114(ptr) Variable Output
+ 119: TypeSampler
120: TypePointer UniformConstant 119
- 121(g_tTexcdf4): 120(ptr) Variable UniformConstant
- 122: TypeImage 11(int) Cube sampled format:Unknown
+ 121(g_sSamp): 120(ptr) Variable UniformConstant
+ 122: TypeImage 6(float) Cube sampled format:Unknown
123: TypePointer UniformConstant 122
- 124(g_tTexcdi4): 123(ptr) Variable UniformConstant
- 125: TypeImage 15(int) Cube sampled format:Unknown
+ 124(g_tTexcdf4): 123(ptr) Variable UniformConstant
+ 125: TypeImage 11(int) Cube sampled format:Unknown
126: TypePointer UniformConstant 125
- 127(g_tTexcdu4): 126(ptr) Variable UniformConstant
- 128: TypeImage 6(float) 1D array sampled format:Unknown
+ 127(g_tTexcdi4): 126(ptr) Variable UniformConstant
+ 128: TypeImage 15(int) Cube sampled format:Unknown
129: TypePointer UniformConstant 128
-130(g_tTex1df4a): 129(ptr) Variable UniformConstant
- 131: TypeImage 11(int) 1D array sampled format:Unknown
+ 130(g_tTexcdu4): 129(ptr) Variable UniformConstant
+ 131: TypeImage 6(float) 1D array sampled format:Unknown
132: TypePointer UniformConstant 131
-133(g_tTex1di4a): 132(ptr) Variable UniformConstant
- 134: TypeImage 15(int) 1D array sampled format:Unknown
+133(g_tTex1df4a): 132(ptr) Variable UniformConstant
+ 134: TypeImage 11(int) 1D array sampled format:Unknown
135: TypePointer UniformConstant 134
-136(g_tTex1du4a): 135(ptr) Variable UniformConstant
- 137: TypeImage 6(float) 2D array sampled format:Unknown
+136(g_tTex1di4a): 135(ptr) Variable UniformConstant
+ 137: TypeImage 15(int) 1D array sampled format:Unknown
138: TypePointer UniformConstant 137
-139(g_tTex2df4a): 138(ptr) Variable UniformConstant
- 140: TypeImage 11(int) 2D array sampled format:Unknown
+139(g_tTex1du4a): 138(ptr) Variable UniformConstant
+ 140: TypeImage 6(float) 2D array sampled format:Unknown
141: TypePointer UniformConstant 140
-142(g_tTex2di4a): 141(ptr) Variable UniformConstant
- 143: TypeImage 15(int) 2D array sampled format:Unknown
+142(g_tTex2df4a): 141(ptr) Variable UniformConstant
+ 143: TypeImage 11(int) 2D array sampled format:Unknown
144: TypePointer UniformConstant 143
-145(g_tTex2du4a): 144(ptr) Variable UniformConstant
- 146: TypeImage 6(float) Cube array sampled format:Unknown
+145(g_tTex2di4a): 144(ptr) Variable UniformConstant
+ 146: TypeImage 15(int) 2D array sampled format:Unknown
147: TypePointer UniformConstant 146
-148(g_tTexcdf4a): 147(ptr) Variable UniformConstant
- 149: TypeImage 11(int) Cube array sampled format:Unknown
+148(g_tTex2du4a): 147(ptr) Variable UniformConstant
+ 149: TypeImage 6(float) Cube array sampled format:Unknown
150: TypePointer UniformConstant 149
-151(g_tTexcdi4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 15(int) Cube array sampled format:Unknown
+151(g_tTexcdf4a): 150(ptr) Variable UniformConstant
+ 152: TypeImage 11(int) Cube array sampled format:Unknown
153: TypePointer UniformConstant 152
-154(g_tTexcdu4a): 153(ptr) Variable UniformConstant
- 155(c1): 17(ptr) Variable UniformConstant
- 156(o1): 17(ptr) Variable UniformConstant
- 157(o2): 13(ptr) Variable UniformConstant
- 158(o3): 50(ptr) Variable UniformConstant
- 159(o4): 80(ptr) Variable UniformConstant
+154(g_tTexcdi4a): 153(ptr) Variable UniformConstant
+ 155: TypeImage 15(int) Cube array sampled format:Unknown
+ 156: TypePointer UniformConstant 155
+157(g_tTexcdu4a): 156(ptr) Variable UniformConstant
+ 158(c1): 17(ptr) Variable UniformConstant
+ 159(o1): 17(ptr) Variable UniformConstant
+ 160(o2): 13(ptr) Variable UniformConstant
+ 161(o3): 50(ptr) Variable UniformConstant
+ 162(o4): 80(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
108(vsout): 107(ptr) Variable Function
@@ -562,6 +580,8 @@
105: 43(ivec4) ImageFetch 100 102 Lod 104
113: 112(ptr) AccessChain 108(vsout) 109
Store 113 111
- 114:106(VS_OUTPUT) Load 108(vsout)
- ReturnValue 114
+ 116: 112(ptr) AccessChain 108(vsout) 109
+ 117: 23(fvec4) Load 116
+ Store 115(Pos) 117
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 8c77675..012af86 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -25,7 +25,7 @@
0:30 'c1' (uniform int)
0:34 move second child to first child (temp 4-component vector of float)
0:34 Color: direct index for structure (temp 4-component vector of float)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
@@ -34,14 +34,27 @@
0:34 1.000000
0:34 1.000000
0:35 move second child to first child (temp float)
-0:35 Depth: direct index for structure (temp float FragDepth)
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:35 Depth: direct index for structure (temp float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:35 Constant:
0:35 1 (const int)
0:35 Constant:
0:35 1.000000
-0:37 Branch: Return with expression
-0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:37 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:37 Color: direct index for structure (temp 4-component vector of float)
+0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37 Constant:
+0:37 0 (const int)
+0:37 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:37 Depth: direct index for structure (temp float)
+0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37 Constant:
+0:37 1 (const int)
+0:37 Branch: Return
0:? Linker Objects
0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
0:? 'g_tTexbf4' (uniform samplerBuffer)
@@ -55,6 +68,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -63,7 +78,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:39 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:28 Sequence
@@ -86,7 +101,7 @@
0:30 'c1' (uniform int)
0:34 move second child to first child (temp 4-component vector of float)
0:34 Color: direct index for structure (temp 4-component vector of float)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 0 (const int)
0:34 Constant:
@@ -95,14 +110,27 @@
0:34 1.000000
0:34 1.000000
0:35 move second child to first child (temp float)
-0:35 Depth: direct index for structure (temp float FragDepth)
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:35 Depth: direct index for structure (temp float)
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:35 Constant:
0:35 1 (const int)
0:35 Constant:
0:35 1.000000
-0:37 Branch: Return with expression
-0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:37 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:37 Color: direct index for structure (temp 4-component vector of float)
+0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37 Constant:
+0:37 0 (const int)
+0:37 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:37 Depth: direct index for structure (temp float)
+0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37 Constant:
+0:37 1 (const int)
+0:37 Branch: Return
0:? Linker Objects
0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
0:? 'g_tTexbf4' (uniform samplerBuffer)
@@ -116,18 +144,19 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 69
+// Id's are bound by 76
Capability Shader
Capability SampledBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 55 59
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "r00"
Name 13 "g_tTexbf4"
@@ -140,20 +169,23 @@
MemberName 44(PS_OUTPUT) 0 "Color"
MemberName 44(PS_OUTPUT) 1 "Depth"
Name 46 "psout"
- Name 56 "g_tTexbf4_test"
- Name 59 "c2"
- Name 62 "c3"
- Name 64 "c4"
- Name 65 "o1"
- Name 66 "o2"
- Name 67 "o3"
- Name 68 "o4"
+ Name 55 "Color"
+ Name 59 "Depth"
+ Name 63 "g_tTexbf4_test"
+ Name 66 "c2"
+ Name 69 "c3"
+ Name 71 "c4"
+ Name 72 "o1"
+ Name 73 "o2"
+ Name 74 "o3"
+ Name 75 "o4"
Decorate 13(g_tTexbf4) DescriptorSet 0
Decorate 27(g_tTexbi4) DescriptorSet 0
Decorate 39(g_tTexbu4) DescriptorSet 0
- MemberDecorate 44(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 56(g_tTexbf4_test) DescriptorSet 0
- Decorate 56(g_tTexbf4_test) Binding 0
+ Decorate 55(Color) Location 0
+ Decorate 59(Depth) BuiltIn FragDepth
+ Decorate 63(g_tTexbf4_test) DescriptorSet 0
+ Decorate 63(g_tTexbf4_test) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -186,19 +218,23 @@
49: 7(fvec4) ConstantComposite 48 48 48 48
51: 15(int) Constant 1
52: TypePointer Function 6(float)
-56(g_tTexbf4_test): 12(ptr) Variable UniformConstant
- 57: TypeVector 15(int) 2
- 58: TypePointer UniformConstant 57(ivec2)
- 59(c2): 58(ptr) Variable UniformConstant
- 60: TypeVector 15(int) 3
- 61: TypePointer UniformConstant 60(ivec3)
- 62(c3): 61(ptr) Variable UniformConstant
- 63: TypePointer UniformConstant 21(ivec4)
- 64(c4): 63(ptr) Variable UniformConstant
- 65(o1): 16(ptr) Variable UniformConstant
- 66(o2): 58(ptr) Variable UniformConstant
- 67(o3): 61(ptr) Variable UniformConstant
- 68(o4): 63(ptr) Variable UniformConstant
+ 54: TypePointer Output 7(fvec4)
+ 55(Color): 54(ptr) Variable Output
+ 58: TypePointer Output 6(float)
+ 59(Depth): 58(ptr) Variable Output
+63(g_tTexbf4_test): 12(ptr) Variable UniformConstant
+ 64: TypeVector 15(int) 2
+ 65: TypePointer UniformConstant 64(ivec2)
+ 66(c2): 65(ptr) Variable UniformConstant
+ 67: TypeVector 15(int) 3
+ 68: TypePointer UniformConstant 67(ivec3)
+ 69(c3): 68(ptr) Variable UniformConstant
+ 70: TypePointer UniformConstant 21(ivec4)
+ 71(c4): 70(ptr) Variable UniformConstant
+ 72(o1): 16(ptr) Variable UniformConstant
+ 73(o2): 65(ptr) Variable UniformConstant
+ 74(o3): 68(ptr) Variable UniformConstant
+ 75(o4): 70(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
@@ -224,6 +260,11 @@
Store 50 49
53: 52(ptr) AccessChain 46(psout) 51
Store 53 48
- 54:44(PS_OUTPUT) Load 46(psout)
- ReturnValue 54
+ 56: 8(ptr) AccessChain 46(psout) 47
+ 57: 7(fvec4) Load 56
+ Store 55(Color) 57
+ 60: 52(ptr) AccessChain 46(psout) 51
+ 61: 6(float) Load 60
+ Store 59(Depth) 61
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index da9f2e4..2110e6f 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:77 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetchOffset (global 4-component vector of float)
@@ -133,7 +133,7 @@
0:64 'o3' (uniform 3-component vector of int)
0:72 move second child to first child (temp 4-component vector of float)
0:72 Color: direct index for structure (temp 4-component vector of float)
-0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:72 Constant:
0:72 0 (const int)
0:72 Constant:
@@ -142,14 +142,27 @@
0:72 1.000000
0:72 1.000000
0:73 move second child to first child (temp float)
-0:73 Depth: direct index for structure (temp float FragDepth)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 Depth: direct index for structure (temp float)
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 1 (const int)
0:73 Constant:
0:73 1.000000
-0:75 Branch: Return with expression
-0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:75 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:75 Color: direct index for structure (temp 4-component vector of float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 0 (const int)
+0:75 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:75 Depth: direct index for structure (temp float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 1 (const int)
+0:75 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -181,6 +194,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -189,7 +204,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:77 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetchOffset (global 4-component vector of float)
@@ -320,7 +335,7 @@
0:64 'o3' (uniform 3-component vector of int)
0:72 move second child to first child (temp 4-component vector of float)
0:72 Color: direct index for structure (temp 4-component vector of float)
-0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:72 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:72 Constant:
0:72 0 (const int)
0:72 Constant:
@@ -329,14 +344,27 @@
0:72 1.000000
0:72 1.000000
0:73 move second child to first child (temp float)
-0:73 Depth: direct index for structure (temp float FragDepth)
-0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:73 Depth: direct index for structure (temp float)
+0:73 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:73 Constant:
0:73 1 (const int)
0:73 Constant:
0:73 1.000000
-0:75 Branch: Return with expression
-0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:75 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:75 Color: direct index for structure (temp 4-component vector of float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 0 (const int)
+0:75 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:75 Depth: direct index for structure (temp float)
+0:75 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:75 Constant:
+0:75 1 (const int)
+0:75 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -368,10 +396,12 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 172
+// Id's are bound by 179
Capability Shader
Capability ImageGatherExtended
@@ -379,9 +409,8 @@
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 130 134
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "g_tTex1df4"
Name 14 "c2"
@@ -402,21 +431,23 @@
MemberName 118(PS_OUTPUT) 0 "Color"
MemberName 118(PS_OUTPUT) 1 "Depth"
Name 120 "psout"
- Name 133 "g_sSamp"
- Name 136 "g_tTexcdf4"
- Name 139 "g_tTexcdi4"
- Name 142 "g_tTexcdu4"
- Name 145 "g_tTex1df4a"
- Name 148 "g_tTex1di4a"
- Name 151 "g_tTex1du4a"
- Name 154 "g_tTex2df4a"
- Name 157 "g_tTex2di4a"
- Name 160 "g_tTex2du4a"
- Name 163 "g_tTexcdf4a"
- Name 166 "g_tTexcdi4a"
- Name 169 "g_tTexcdu4a"
- Name 170 "c1"
- Name 171 "o4"
+ Name 130 "Color"
+ Name 134 "Depth"
+ Name 140 "g_sSamp"
+ Name 143 "g_tTexcdf4"
+ Name 146 "g_tTexcdi4"
+ Name 149 "g_tTexcdu4"
+ Name 152 "g_tTex1df4a"
+ Name 155 "g_tTex1di4a"
+ Name 158 "g_tTex1du4a"
+ Name 161 "g_tTex2df4a"
+ Name 164 "g_tTex2di4a"
+ Name 167 "g_tTex2du4a"
+ Name 170 "g_tTexcdf4a"
+ Name 173 "g_tTexcdi4a"
+ Name 176 "g_tTexcdu4a"
+ Name 177 "c1"
+ Name 178 "o4"
Decorate 9(g_tTex1df4) DescriptorSet 0
Decorate 9(g_tTex1df4) Binding 0
Decorate 29(g_tTex1di4) DescriptorSet 0
@@ -427,21 +458,22 @@
Decorate 86(g_tTex3df4) DescriptorSet 0
Decorate 100(g_tTex3di4) DescriptorSet 0
Decorate 110(g_tTex3du4) DescriptorSet 0
- MemberDecorate 118(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 133(g_sSamp) DescriptorSet 0
- Decorate 133(g_sSamp) Binding 0
- Decorate 136(g_tTexcdf4) DescriptorSet 0
- Decorate 139(g_tTexcdi4) DescriptorSet 0
- Decorate 142(g_tTexcdu4) DescriptorSet 0
- Decorate 145(g_tTex1df4a) DescriptorSet 0
- Decorate 148(g_tTex1di4a) DescriptorSet 0
- Decorate 151(g_tTex1du4a) DescriptorSet 0
- Decorate 154(g_tTex2df4a) DescriptorSet 0
- Decorate 157(g_tTex2di4a) DescriptorSet 0
- Decorate 160(g_tTex2du4a) DescriptorSet 0
- Decorate 163(g_tTexcdf4a) DescriptorSet 0
- Decorate 166(g_tTexcdi4a) DescriptorSet 0
- Decorate 169(g_tTexcdu4a) DescriptorSet 0
+ Decorate 130(Color) Location 0
+ Decorate 134(Depth) BuiltIn FragDepth
+ Decorate 140(g_sSamp) DescriptorSet 0
+ Decorate 140(g_sSamp) Binding 0
+ Decorate 143(g_tTexcdf4) DescriptorSet 0
+ Decorate 146(g_tTexcdi4) DescriptorSet 0
+ Decorate 149(g_tTexcdu4) DescriptorSet 0
+ Decorate 152(g_tTex1df4a) DescriptorSet 0
+ Decorate 155(g_tTex1di4a) DescriptorSet 0
+ Decorate 158(g_tTex1du4a) DescriptorSet 0
+ Decorate 161(g_tTex2df4a) DescriptorSet 0
+ Decorate 164(g_tTex2di4a) DescriptorSet 0
+ Decorate 167(g_tTex2du4a) DescriptorSet 0
+ Decorate 170(g_tTexcdf4a) DescriptorSet 0
+ Decorate 173(g_tTexcdi4a) DescriptorSet 0
+ Decorate 176(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -501,47 +533,51 @@
124: TypePointer Function 25(fvec4)
126: 11(int) Constant 1
127: TypePointer Function 6(float)
- 131: TypeSampler
- 132: TypePointer UniformConstant 131
- 133(g_sSamp): 132(ptr) Variable UniformConstant
- 134: TypeImage 6(float) Cube sampled format:Unknown
- 135: TypePointer UniformConstant 134
- 136(g_tTexcdf4): 135(ptr) Variable UniformConstant
- 137: TypeImage 11(int) Cube sampled format:Unknown
- 138: TypePointer UniformConstant 137
- 139(g_tTexcdi4): 138(ptr) Variable UniformConstant
- 140: TypeImage 15(int) Cube sampled format:Unknown
- 141: TypePointer UniformConstant 140
- 142(g_tTexcdu4): 141(ptr) Variable UniformConstant
- 143: TypeImage 6(float) 1D array sampled format:Unknown
- 144: TypePointer UniformConstant 143
-145(g_tTex1df4a): 144(ptr) Variable UniformConstant
- 146: TypeImage 11(int) 1D array sampled format:Unknown
- 147: TypePointer UniformConstant 146
-148(g_tTex1di4a): 147(ptr) Variable UniformConstant
- 149: TypeImage 15(int) 1D array sampled format:Unknown
- 150: TypePointer UniformConstant 149
-151(g_tTex1du4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 6(float) 2D array sampled format:Unknown
- 153: TypePointer UniformConstant 152
-154(g_tTex2df4a): 153(ptr) Variable UniformConstant
- 155: TypeImage 11(int) 2D array sampled format:Unknown
- 156: TypePointer UniformConstant 155
-157(g_tTex2di4a): 156(ptr) Variable UniformConstant
- 158: TypeImage 15(int) 2D array sampled format:Unknown
- 159: TypePointer UniformConstant 158
-160(g_tTex2du4a): 159(ptr) Variable UniformConstant
- 161: TypeImage 6(float) Cube array sampled format:Unknown
- 162: TypePointer UniformConstant 161
-163(g_tTexcdf4a): 162(ptr) Variable UniformConstant
- 164: TypeImage 11(int) Cube array sampled format:Unknown
- 165: TypePointer UniformConstant 164
-166(g_tTexcdi4a): 165(ptr) Variable UniformConstant
- 167: TypeImage 15(int) Cube array sampled format:Unknown
- 168: TypePointer UniformConstant 167
-169(g_tTexcdu4a): 168(ptr) Variable UniformConstant
- 170(c1): 17(ptr) Variable UniformConstant
- 171(o4): 88(ptr) Variable UniformConstant
+ 129: TypePointer Output 25(fvec4)
+ 130(Color): 129(ptr) Variable Output
+ 133: TypePointer Output 6(float)
+ 134(Depth): 133(ptr) Variable Output
+ 138: TypeSampler
+ 139: TypePointer UniformConstant 138
+ 140(g_sSamp): 139(ptr) Variable UniformConstant
+ 141: TypeImage 6(float) Cube sampled format:Unknown
+ 142: TypePointer UniformConstant 141
+ 143(g_tTexcdf4): 142(ptr) Variable UniformConstant
+ 144: TypeImage 11(int) Cube sampled format:Unknown
+ 145: TypePointer UniformConstant 144
+ 146(g_tTexcdi4): 145(ptr) Variable UniformConstant
+ 147: TypeImage 15(int) Cube sampled format:Unknown
+ 148: TypePointer UniformConstant 147
+ 149(g_tTexcdu4): 148(ptr) Variable UniformConstant
+ 150: TypeImage 6(float) 1D array sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+152(g_tTex1df4a): 151(ptr) Variable UniformConstant
+ 153: TypeImage 11(int) 1D array sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+155(g_tTex1di4a): 154(ptr) Variable UniformConstant
+ 156: TypeImage 15(int) 1D array sampled format:Unknown
+ 157: TypePointer UniformConstant 156
+158(g_tTex1du4a): 157(ptr) Variable UniformConstant
+ 159: TypeImage 6(float) 2D array sampled format:Unknown
+ 160: TypePointer UniformConstant 159
+161(g_tTex2df4a): 160(ptr) Variable UniformConstant
+ 162: TypeImage 11(int) 2D array sampled format:Unknown
+ 163: TypePointer UniformConstant 162
+164(g_tTex2di4a): 163(ptr) Variable UniformConstant
+ 165: TypeImage 15(int) 2D array sampled format:Unknown
+ 166: TypePointer UniformConstant 165
+167(g_tTex2du4a): 166(ptr) Variable UniformConstant
+ 168: TypeImage 6(float) Cube array sampled format:Unknown
+ 169: TypePointer UniformConstant 168
+170(g_tTexcdf4a): 169(ptr) Variable UniformConstant
+ 171: TypeImage 11(int) Cube array sampled format:Unknown
+ 172: TypePointer UniformConstant 171
+173(g_tTexcdi4a): 172(ptr) Variable UniformConstant
+ 174: TypeImage 15(int) Cube array sampled format:Unknown
+ 175: TypePointer UniformConstant 174
+176(g_tTexcdu4a): 175(ptr) Variable UniformConstant
+ 177(c1): 17(ptr) Variable UniformConstant
+ 178(o4): 88(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
120(psout): 119(ptr) Variable Function
@@ -612,6 +648,11 @@
Store 125 123
128: 127(ptr) AccessChain 120(psout) 126
Store 128 122
- 129:118(PS_OUTPUT) Load 120(psout)
- ReturnValue 129
+ 131: 124(ptr) AccessChain 120(psout) 121
+ 132: 25(fvec4) Load 131
+ Store 130(Color) 132
+ 135: 127(ptr) AccessChain 120(psout) 126
+ 136: 6(float) Load 135
+ Store 134(Depth) 136
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 97c164c..d5f6671 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:70 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetchOffset (global 4-component vector of float)
@@ -97,7 +97,7 @@
0:59 'o2' (uniform 2-component vector of int)
0:65 move second child to first child (temp 4-component vector of float)
0:65 Color: direct index for structure (temp 4-component vector of float)
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:65 Constant:
0:65 0 (const int)
0:65 Constant:
@@ -106,14 +106,27 @@
0:65 1.000000
0:65 1.000000
0:66 move second child to first child (temp float)
-0:66 Depth: direct index for structure (temp float FragDepth)
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:66 Constant:
0:66 1 (const int)
0:66 Constant:
0:66 1.000000
-0:68 Branch: Return with expression
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:68 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:68 Color: direct index for structure (temp 4-component vector of float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:68 Constant:
+0:68 0 (const int)
+0:68 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:68 Constant:
+0:68 1 (const int)
+0:68 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -145,6 +158,8 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -153,7 +168,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:70 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:48 Function Parameters:
0:? Sequence
0:52 textureFetchOffset (global 4-component vector of float)
@@ -248,7 +263,7 @@
0:59 'o2' (uniform 2-component vector of int)
0:65 move second child to first child (temp 4-component vector of float)
0:65 Color: direct index for structure (temp 4-component vector of float)
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:65 Constant:
0:65 0 (const int)
0:65 Constant:
@@ -257,14 +272,27 @@
0:65 1.000000
0:65 1.000000
0:66 move second child to first child (temp float)
-0:66 Depth: direct index for structure (temp float FragDepth)
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:66 Constant:
0:66 1 (const int)
0:66 Constant:
0:66 1.000000
-0:68 Branch: Return with expression
-0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:68 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:68 Color: direct index for structure (temp 4-component vector of float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:68 Constant:
+0:68 0 (const int)
+0:68 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:68 Depth: direct index for structure (temp float)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:68 Constant:
+0:68 1 (const int)
+0:68 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -296,10 +324,12 @@
0:? 'o2' (uniform 2-component vector of int)
0:? 'o3' (uniform 3-component vector of int)
0:? 'o4' (uniform 4-component vector of int)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 149
+// Id's are bound by 156
Capability Shader
Capability ImageGatherExtended
@@ -307,9 +337,8 @@
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 96 100
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "g_tTex1df4a"
Name 14 "c3"
@@ -325,51 +354,54 @@
MemberName 84(PS_OUTPUT) 0 "Color"
MemberName 84(PS_OUTPUT) 1 "Depth"
Name 86 "psout"
- Name 99 "g_sSamp"
- Name 102 "g_tTex1df4"
- Name 105 "g_tTex1di4"
- Name 108 "g_tTex1du4"
- Name 111 "g_tTex2df4"
- Name 114 "g_tTex2di4"
- Name 117 "g_tTex2du4"
- Name 120 "g_tTex3df4"
- Name 123 "g_tTex3di4"
- Name 126 "g_tTex3du4"
- Name 129 "g_tTexcdf4"
- Name 132 "g_tTexcdi4"
- Name 135 "g_tTexcdu4"
- Name 138 "g_tTexcdf4a"
- Name 141 "g_tTexcdi4a"
- Name 144 "g_tTexcdu4a"
- Name 145 "c1"
- Name 146 "c2"
- Name 147 "o3"
- Name 148 "o4"
+ Name 96 "Color"
+ Name 100 "Depth"
+ Name 106 "g_sSamp"
+ Name 109 "g_tTex1df4"
+ Name 112 "g_tTex1di4"
+ Name 115 "g_tTex1du4"
+ Name 118 "g_tTex2df4"
+ Name 121 "g_tTex2di4"
+ Name 124 "g_tTex2du4"
+ Name 127 "g_tTex3df4"
+ Name 130 "g_tTex3di4"
+ Name 133 "g_tTex3du4"
+ Name 136 "g_tTexcdf4"
+ Name 139 "g_tTexcdi4"
+ Name 142 "g_tTexcdu4"
+ Name 145 "g_tTexcdf4a"
+ Name 148 "g_tTexcdi4a"
+ Name 151 "g_tTexcdu4a"
+ Name 152 "c1"
+ Name 153 "c2"
+ Name 154 "o3"
+ Name 155 "o4"
Decorate 9(g_tTex1df4a) DescriptorSet 0
Decorate 29(g_tTex1di4a) DescriptorSet 0
Decorate 40(g_tTex1du4a) DescriptorSet 0
Decorate 51(g_tTex2df4a) DescriptorSet 0
Decorate 66(g_tTex2di4a) DescriptorSet 0
Decorate 76(g_tTex2du4a) DescriptorSet 0
- MemberDecorate 84(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 99(g_sSamp) DescriptorSet 0
- Decorate 99(g_sSamp) Binding 0
- Decorate 102(g_tTex1df4) DescriptorSet 0
- Decorate 102(g_tTex1df4) Binding 0
- Decorate 105(g_tTex1di4) DescriptorSet 0
- Decorate 108(g_tTex1du4) DescriptorSet 0
- Decorate 111(g_tTex2df4) DescriptorSet 0
- Decorate 114(g_tTex2di4) DescriptorSet 0
- Decorate 117(g_tTex2du4) DescriptorSet 0
- Decorate 120(g_tTex3df4) DescriptorSet 0
- Decorate 123(g_tTex3di4) DescriptorSet 0
- Decorate 126(g_tTex3du4) DescriptorSet 0
- Decorate 129(g_tTexcdf4) DescriptorSet 0
- Decorate 132(g_tTexcdi4) DescriptorSet 0
- Decorate 135(g_tTexcdu4) DescriptorSet 0
- Decorate 138(g_tTexcdf4a) DescriptorSet 0
- Decorate 141(g_tTexcdi4a) DescriptorSet 0
- Decorate 144(g_tTexcdu4a) DescriptorSet 0
+ Decorate 96(Color) Location 0
+ Decorate 100(Depth) BuiltIn FragDepth
+ Decorate 106(g_sSamp) DescriptorSet 0
+ Decorate 106(g_sSamp) Binding 0
+ Decorate 109(g_tTex1df4) DescriptorSet 0
+ Decorate 109(g_tTex1df4) Binding 0
+ Decorate 112(g_tTex1di4) DescriptorSet 0
+ Decorate 115(g_tTex1du4) DescriptorSet 0
+ Decorate 118(g_tTex2df4) DescriptorSet 0
+ Decorate 121(g_tTex2di4) DescriptorSet 0
+ Decorate 124(g_tTex2du4) DescriptorSet 0
+ Decorate 127(g_tTex3df4) DescriptorSet 0
+ Decorate 130(g_tTex3di4) DescriptorSet 0
+ Decorate 133(g_tTex3du4) DescriptorSet 0
+ Decorate 136(g_tTexcdf4) DescriptorSet 0
+ Decorate 139(g_tTexcdi4) DescriptorSet 0
+ Decorate 142(g_tTexcdu4) DescriptorSet 0
+ Decorate 145(g_tTexcdf4a) DescriptorSet 0
+ Decorate 148(g_tTexcdi4a) DescriptorSet 0
+ Decorate 151(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -416,58 +448,62 @@
90: TypePointer Function 25(fvec4)
92: 11(int) Constant 1
93: TypePointer Function 6(float)
- 97: TypeSampler
- 98: TypePointer UniformConstant 97
- 99(g_sSamp): 98(ptr) Variable UniformConstant
- 100: TypeImage 6(float) 1D sampled format:Unknown
- 101: TypePointer UniformConstant 100
- 102(g_tTex1df4): 101(ptr) Variable UniformConstant
- 103: TypeImage 11(int) 1D sampled format:Unknown
- 104: TypePointer UniformConstant 103
- 105(g_tTex1di4): 104(ptr) Variable UniformConstant
- 106: TypeImage 18(int) 1D sampled format:Unknown
- 107: TypePointer UniformConstant 106
- 108(g_tTex1du4): 107(ptr) Variable UniformConstant
- 109: TypeImage 6(float) 2D sampled format:Unknown
- 110: TypePointer UniformConstant 109
- 111(g_tTex2df4): 110(ptr) Variable UniformConstant
- 112: TypeImage 11(int) 2D sampled format:Unknown
- 113: TypePointer UniformConstant 112
- 114(g_tTex2di4): 113(ptr) Variable UniformConstant
- 115: TypeImage 18(int) 2D sampled format:Unknown
- 116: TypePointer UniformConstant 115
- 117(g_tTex2du4): 116(ptr) Variable UniformConstant
- 118: TypeImage 6(float) 3D sampled format:Unknown
- 119: TypePointer UniformConstant 118
- 120(g_tTex3df4): 119(ptr) Variable UniformConstant
- 121: TypeImage 11(int) 3D sampled format:Unknown
- 122: TypePointer UniformConstant 121
- 123(g_tTex3di4): 122(ptr) Variable UniformConstant
- 124: TypeImage 18(int) 3D sampled format:Unknown
- 125: TypePointer UniformConstant 124
- 126(g_tTex3du4): 125(ptr) Variable UniformConstant
- 127: TypeImage 6(float) Cube sampled format:Unknown
- 128: TypePointer UniformConstant 127
- 129(g_tTexcdf4): 128(ptr) Variable UniformConstant
- 130: TypeImage 11(int) Cube sampled format:Unknown
- 131: TypePointer UniformConstant 130
- 132(g_tTexcdi4): 131(ptr) Variable UniformConstant
- 133: TypeImage 18(int) Cube sampled format:Unknown
- 134: TypePointer UniformConstant 133
- 135(g_tTexcdu4): 134(ptr) Variable UniformConstant
- 136: TypeImage 6(float) Cube array sampled format:Unknown
- 137: TypePointer UniformConstant 136
-138(g_tTexcdf4a): 137(ptr) Variable UniformConstant
- 139: TypeImage 11(int) Cube array sampled format:Unknown
- 140: TypePointer UniformConstant 139
-141(g_tTexcdi4a): 140(ptr) Variable UniformConstant
- 142: TypeImage 18(int) Cube array sampled format:Unknown
- 143: TypePointer UniformConstant 142
-144(g_tTexcdu4a): 143(ptr) Variable UniformConstant
- 145(c1): 20(ptr) Variable UniformConstant
- 146(c2): 60(ptr) Variable UniformConstant
- 147(o3): 13(ptr) Variable UniformConstant
- 148(o4): 53(ptr) Variable UniformConstant
+ 95: TypePointer Output 25(fvec4)
+ 96(Color): 95(ptr) Variable Output
+ 99: TypePointer Output 6(float)
+ 100(Depth): 99(ptr) Variable Output
+ 104: TypeSampler
+ 105: TypePointer UniformConstant 104
+ 106(g_sSamp): 105(ptr) Variable UniformConstant
+ 107: TypeImage 6(float) 1D sampled format:Unknown
+ 108: TypePointer UniformConstant 107
+ 109(g_tTex1df4): 108(ptr) Variable UniformConstant
+ 110: TypeImage 11(int) 1D sampled format:Unknown
+ 111: TypePointer UniformConstant 110
+ 112(g_tTex1di4): 111(ptr) Variable UniformConstant
+ 113: TypeImage 18(int) 1D sampled format:Unknown
+ 114: TypePointer UniformConstant 113
+ 115(g_tTex1du4): 114(ptr) Variable UniformConstant
+ 116: TypeImage 6(float) 2D sampled format:Unknown
+ 117: TypePointer UniformConstant 116
+ 118(g_tTex2df4): 117(ptr) Variable UniformConstant
+ 119: TypeImage 11(int) 2D sampled format:Unknown
+ 120: TypePointer UniformConstant 119
+ 121(g_tTex2di4): 120(ptr) Variable UniformConstant
+ 122: TypeImage 18(int) 2D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex2du4): 123(ptr) Variable UniformConstant
+ 125: TypeImage 6(float) 3D sampled format:Unknown
+ 126: TypePointer UniformConstant 125
+ 127(g_tTex3df4): 126(ptr) Variable UniformConstant
+ 128: TypeImage 11(int) 3D sampled format:Unknown
+ 129: TypePointer UniformConstant 128
+ 130(g_tTex3di4): 129(ptr) Variable UniformConstant
+ 131: TypeImage 18(int) 3D sampled format:Unknown
+ 132: TypePointer UniformConstant 131
+ 133(g_tTex3du4): 132(ptr) Variable UniformConstant
+ 134: TypeImage 6(float) Cube sampled format:Unknown
+ 135: TypePointer UniformConstant 134
+ 136(g_tTexcdf4): 135(ptr) Variable UniformConstant
+ 137: TypeImage 11(int) Cube sampled format:Unknown
+ 138: TypePointer UniformConstant 137
+ 139(g_tTexcdi4): 138(ptr) Variable UniformConstant
+ 140: TypeImage 18(int) Cube sampled format:Unknown
+ 141: TypePointer UniformConstant 140
+ 142(g_tTexcdu4): 141(ptr) Variable UniformConstant
+ 143: TypeImage 6(float) Cube array sampled format:Unknown
+ 144: TypePointer UniformConstant 143
+145(g_tTexcdf4a): 144(ptr) Variable UniformConstant
+ 146: TypeImage 11(int) Cube array sampled format:Unknown
+ 147: TypePointer UniformConstant 146
+148(g_tTexcdi4a): 147(ptr) Variable UniformConstant
+ 149: TypeImage 18(int) Cube array sampled format:Unknown
+ 150: TypePointer UniformConstant 149
+151(g_tTexcdu4a): 150(ptr) Variable UniformConstant
+ 152(c1): 20(ptr) Variable UniformConstant
+ 153(c2): 60(ptr) Variable UniformConstant
+ 154(o3): 13(ptr) Variable UniformConstant
+ 155(o4): 53(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
86(psout): 85(ptr) Variable Function
@@ -517,6 +553,11 @@
Store 91 89
94: 93(ptr) AccessChain 86(psout) 92
Store 94 88
- 95:84(PS_OUTPUT) Load 86(psout)
- ReturnValue 95
+ 97: 90(ptr) AccessChain 86(psout) 87
+ 98: 25(fvec4) Load 97
+ Store 96(Color) 98
+ 101: 93(ptr) AccessChain 86(psout) 92
+ 102: 6(float) Load 101
+ Store 100(Depth) 102
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index b081a4a..2d63460 100755
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -7,16 +7,19 @@
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
-0:11 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:9 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 'inFloat1' (in 1-component vector of float)
0:? Linker Objects
0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float)
-0:? 'fmat41' (global 1X4 matrix of float)
-0:? 'fmat12' (global 2X1 matrix of float)
-0:? 'dmat23' (global 3X2 matrix of double)
+0:? 'fmat41' (global 4X1 matrix of float)
+0:? 'fmat12' (global 1X2 matrix of float)
+0:? 'dmat23' (global 2X3 matrix of double)
0:? 'int44' (global 4X4 matrix of int)
@@ -31,21 +34,24 @@
0:1 'f1' (global 1-component vector of float)
0:1 Constant:
0:1 1.000000
-0:11 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
+0:9 Function Definition: ShaderFunction(vf1;f1; (global 1-component vector of float)
0:9 Function Parameters:
0:9 'inFloat1' (in 1-component vector of float)
0:9 'inScalar' (in float)
+0:? Sequence
+0:10 Branch: Return with expression
+0:10 'inFloat1' (in 1-component vector of float)
0:? Linker Objects
0:? 'f1' (global 1-component vector of float)
0:? 'fmat11' (global 1X1 matrix of float)
-0:? 'fmat41' (global 1X4 matrix of float)
-0:? 'fmat12' (global 2X1 matrix of float)
-0:? 'dmat23' (global 3X2 matrix of double)
+0:? 'fmat41' (global 4X1 matrix of float)
+0:? 'fmat12' (global 1X2 matrix of float)
+0:? 'dmat23' (global 2X3 matrix of double)
0:? 'int44' (global 4X4 matrix of int)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 38
+// Id's are bound by 40
Capability Shader
Capability Float64
@@ -53,17 +59,16 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf1;f1;"
Name 9 "inFloat1"
Name 10 "inScalar"
Name 14 "f1"
- Name 20 "fmat11"
- Name 24 "fmat41"
- Name 27 "fmat12"
- Name 32 "dmat23"
- Name 37 "int44"
+ Name 22 "fmat11"
+ Name 25 "fmat41"
+ Name 29 "fmat12"
+ Name 34 "dmat23"
+ Name 39 "int44"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -72,27 +77,27 @@
13: TypePointer Private 6(float)
14(f1): 13(ptr) Variable Private
15: 6(float) Constant 1065353216
- 17: TypeVector 6(float) 1
- 18: TypeMatrix 17(fvec) 1
- 19: TypePointer Private 18
- 20(fmat11): 19(ptr) Variable Private
- 21: TypeVector 6(float) 4
- 22: TypeMatrix 21(fvec4) 1
- 23: TypePointer Private 22
- 24(fmat41): 23(ptr) Variable Private
- 25: TypeMatrix 17(fvec) 2
- 26: TypePointer Private 25
- 27(fmat12): 26(ptr) Variable Private
- 28: TypeFloat 64
- 29: TypeVector 28(float) 2
- 30: TypeMatrix 29(fvec2) 3
- 31: TypePointer Private 30
- 32(dmat23): 31(ptr) Variable Private
- 33: TypeInt 32 1
- 34: TypeVector 33(int) 4
- 35: TypeMatrix 34(ivec4) 4
- 36: TypePointer Private 35
- 37(int44): 36(ptr) Variable Private
+ 19: TypeVector 6(float) 1
+ 20: TypeMatrix 19(fvec) 1
+ 21: TypePointer Private 20
+ 22(fmat11): 21(ptr) Variable Private
+ 23: TypeMatrix 19(fvec) 4
+ 24: TypePointer Private 23
+ 25(fmat41): 24(ptr) Variable Private
+ 26: TypeVector 6(float) 2
+ 27: TypeMatrix 26(fvec2) 1
+ 28: TypePointer Private 27
+ 29(fmat12): 28(ptr) Variable Private
+ 30: TypeFloat 64
+ 31: TypeVector 30(float) 3
+ 32: TypeMatrix 31(fvec3) 2
+ 33: TypePointer Private 32
+ 34(dmat23): 33(ptr) Variable Private
+ 35: TypeInt 32 1
+ 36: TypeVector 35(int) 4
+ 37: TypeMatrix 36(ivec4) 4
+ 38: TypePointer Private 37
+ 39(int44): 38(ptr) Variable Private
4(PixelShaderFunction): 2 Function None 3
5: Label
Store 14(f1) 15
@@ -101,6 +106,6 @@
9(inFloat1): 7(ptr) FunctionParameter
10(inScalar): 7(ptr) FunctionParameter
12: Label
- 16: 6(float) Undef
+ 16: 6(float) Load 9(inFloat1)
ReturnValue 16
FunctionEnd
diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out
new file mode 100644
index 0000000..7acaa71
--- /dev/null
+++ b/Test/baseResults/hlsl.matrixindex.frag.out
@@ -0,0 +1,380 @@
+hlsl.matrixindex.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10 Function Parameters:
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child (temp float)
+0:22 'e1_00' (temp float)
+0:22 Constant:
+0:22 10.000000
+0:23 Sequence
+0:23 move second child to first child (temp float)
+0:23 'e1_01' (temp float)
+0:23 Constant:
+0:23 11.000000
+0:24 Sequence
+0:24 move second child to first child (temp float)
+0:24 'e1_10' (temp float)
+0:24 Constant:
+0:24 12.000000
+0:25 Sequence
+0:25 move second child to first child (temp float)
+0:25 'e1_11' (temp float)
+0:25 Constant:
+0:25 13.000000
+0:26 Sequence
+0:26 move second child to first child (temp float)
+0:26 'e1_20' (temp float)
+0:26 Constant:
+0:26 14.000000
+0:27 Sequence
+0:27 move second child to first child (temp float)
+0:27 'e1_21' (temp float)
+0:27 Constant:
+0:27 15.000000
+0:29 Sequence
+0:29 move second child to first child (temp float)
+0:29 'e2_00' (temp float)
+0:29 Constant:
+0:29 20.000000
+0:30 Sequence
+0:30 move second child to first child (temp float)
+0:30 'e2_01' (temp float)
+0:30 Constant:
+0:30 21.000000
+0:31 Sequence
+0:31 move second child to first child (temp float)
+0:31 'e2_10' (temp float)
+0:31 Constant:
+0:31 22.000000
+0:32 Sequence
+0:32 move second child to first child (temp float)
+0:32 'e2_11' (temp float)
+0:32 Constant:
+0:32 23.000000
+0:33 Sequence
+0:33 move second child to first child (temp float)
+0:33 'e2_20' (temp float)
+0:33 Constant:
+0:33 24.000000
+0:34 Sequence
+0:34 move second child to first child (temp float)
+0:34 'e2_21' (temp float)
+0:34 Constant:
+0:34 25.000000
+0:39 Sequence
+0:39 move second child to first child (temp 2-component vector of float)
+0:39 'r0a' (temp 2-component vector of float)
+0:39 Constant:
+0:39 10.000000
+0:39 11.000000
+0:40 Sequence
+0:40 move second child to first child (temp 2-component vector of float)
+0:40 'r1a' (temp 2-component vector of float)
+0:40 Constant:
+0:40 12.000000
+0:40 13.000000
+0:41 Sequence
+0:41 move second child to first child (temp 2-component vector of float)
+0:41 'r2a' (temp 2-component vector of float)
+0:41 Constant:
+0:41 14.000000
+0:41 15.000000
+0:43 Sequence
+0:43 move second child to first child (temp 2-component vector of float)
+0:43 'r0b' (temp 2-component vector of float)
+0:43 indirect index (temp 2-component vector of float)
+0:43 Constant:
+0:43 20.000000
+0:43 21.000000
+0:43 22.000000
+0:43 23.000000
+0:43 24.000000
+0:43 25.000000
+0:43 'idx' (uniform int)
+0:44 Sequence
+0:44 move second child to first child (temp 2-component vector of float)
+0:44 'r0c' (temp 2-component vector of float)
+0:44 indirect index (temp 2-component vector of float)
+0:44 'um' (uniform 3X2 matrix of float)
+0:44 'idx' (uniform int)
+0:47 move second child to first child (temp 4-component vector of float)
+0:47 Color: direct index for structure (temp 4-component vector of float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color})
+0:47 Constant:
+0:47 0 (const int)
+0:47 Construct vec4 (temp 4-component vector of float)
+0:47 'e2_11' (temp float)
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
+0:? Linker Objects
+0:? 'idx' (uniform int)
+0:? 'um' (uniform 3X2 matrix of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:10 Function Parameters:
+0:? Sequence
+0:22 Sequence
+0:22 move second child to first child (temp float)
+0:22 'e1_00' (temp float)
+0:22 Constant:
+0:22 10.000000
+0:23 Sequence
+0:23 move second child to first child (temp float)
+0:23 'e1_01' (temp float)
+0:23 Constant:
+0:23 11.000000
+0:24 Sequence
+0:24 move second child to first child (temp float)
+0:24 'e1_10' (temp float)
+0:24 Constant:
+0:24 12.000000
+0:25 Sequence
+0:25 move second child to first child (temp float)
+0:25 'e1_11' (temp float)
+0:25 Constant:
+0:25 13.000000
+0:26 Sequence
+0:26 move second child to first child (temp float)
+0:26 'e1_20' (temp float)
+0:26 Constant:
+0:26 14.000000
+0:27 Sequence
+0:27 move second child to first child (temp float)
+0:27 'e1_21' (temp float)
+0:27 Constant:
+0:27 15.000000
+0:29 Sequence
+0:29 move second child to first child (temp float)
+0:29 'e2_00' (temp float)
+0:29 Constant:
+0:29 20.000000
+0:30 Sequence
+0:30 move second child to first child (temp float)
+0:30 'e2_01' (temp float)
+0:30 Constant:
+0:30 21.000000
+0:31 Sequence
+0:31 move second child to first child (temp float)
+0:31 'e2_10' (temp float)
+0:31 Constant:
+0:31 22.000000
+0:32 Sequence
+0:32 move second child to first child (temp float)
+0:32 'e2_11' (temp float)
+0:32 Constant:
+0:32 23.000000
+0:33 Sequence
+0:33 move second child to first child (temp float)
+0:33 'e2_20' (temp float)
+0:33 Constant:
+0:33 24.000000
+0:34 Sequence
+0:34 move second child to first child (temp float)
+0:34 'e2_21' (temp float)
+0:34 Constant:
+0:34 25.000000
+0:39 Sequence
+0:39 move second child to first child (temp 2-component vector of float)
+0:39 'r0a' (temp 2-component vector of float)
+0:39 Constant:
+0:39 10.000000
+0:39 11.000000
+0:40 Sequence
+0:40 move second child to first child (temp 2-component vector of float)
+0:40 'r1a' (temp 2-component vector of float)
+0:40 Constant:
+0:40 12.000000
+0:40 13.000000
+0:41 Sequence
+0:41 move second child to first child (temp 2-component vector of float)
+0:41 'r2a' (temp 2-component vector of float)
+0:41 Constant:
+0:41 14.000000
+0:41 15.000000
+0:43 Sequence
+0:43 move second child to first child (temp 2-component vector of float)
+0:43 'r0b' (temp 2-component vector of float)
+0:43 indirect index (temp 2-component vector of float)
+0:43 Constant:
+0:43 20.000000
+0:43 21.000000
+0:43 22.000000
+0:43 23.000000
+0:43 24.000000
+0:43 25.000000
+0:43 'idx' (uniform int)
+0:44 Sequence
+0:44 move second child to first child (temp 2-component vector of float)
+0:44 'r0c' (temp 2-component vector of float)
+0:44 indirect index (temp 2-component vector of float)
+0:44 'um' (uniform 3X2 matrix of float)
+0:44 'idx' (uniform int)
+0:47 move second child to first child (temp 4-component vector of float)
+0:47 Color: direct index for structure (temp 4-component vector of float)
+0:47 'psout' (temp structure{temp 4-component vector of float Color})
+0:47 Constant:
+0:47 0 (const int)
+0:47 Construct vec4 (temp 4-component vector of float)
+0:47 'e2_11' (temp float)
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
+0:? Linker Objects
+0:? 'idx' (uniform int)
+0:? 'um' (uniform 3X2 matrix of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 75
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 71
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 8 "e1_00"
+ Name 10 "e1_01"
+ Name 12 "e1_10"
+ Name 14 "e1_11"
+ Name 16 "e1_20"
+ Name 18 "e1_21"
+ Name 20 "e2_00"
+ Name 22 "e2_01"
+ Name 24 "e2_10"
+ Name 26 "e2_11"
+ Name 28 "e2_20"
+ Name 30 "e2_21"
+ Name 34 "r0a"
+ Name 36 "r1a"
+ Name 38 "r2a"
+ Name 40 "r0b"
+ Name 48 "idx"
+ Name 51 "indexable"
+ Name 54 "r0c"
+ Name 56 "um"
+ Name 62 "PS_OUTPUT"
+ MemberName 62(PS_OUTPUT) 0 "Color"
+ Name 64 "psout"
+ Name 71 "Color"
+ Decorate 71(Color) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 9: 6(float) Constant 1092616192
+ 11: 6(float) Constant 1093664768
+ 13: 6(float) Constant 1094713344
+ 15: 6(float) Constant 1095761920
+ 17: 6(float) Constant 1096810496
+ 19: 6(float) Constant 1097859072
+ 21: 6(float) Constant 1101004800
+ 23: 6(float) Constant 1101529088
+ 25: 6(float) Constant 1102053376
+ 27: 6(float) Constant 1102577664
+ 29: 6(float) Constant 1103101952
+ 31: 6(float) Constant 1103626240
+ 32: TypeVector 6(float) 2
+ 33: TypePointer Function 32(fvec2)
+ 35: 32(fvec2) ConstantComposite 9 11
+ 37: 32(fvec2) ConstantComposite 13 15
+ 39: 32(fvec2) ConstantComposite 17 19
+ 41: TypeMatrix 32(fvec2) 3
+ 42: 32(fvec2) ConstantComposite 21 23
+ 43: 32(fvec2) ConstantComposite 25 27
+ 44: 32(fvec2) ConstantComposite 29 31
+ 45: 41 ConstantComposite 42 43 44
+ 46: TypeInt 32 1
+ 47: TypePointer UniformConstant 46(int)
+ 48(idx): 47(ptr) Variable UniformConstant
+ 50: TypePointer Function 41
+ 55: TypePointer UniformConstant 41
+ 56(um): 55(ptr) Variable UniformConstant
+ 58: TypePointer UniformConstant 32(fvec2)
+ 61: TypeVector 6(float) 4
+ 62(PS_OUTPUT): TypeStruct 61(fvec4)
+ 63: TypePointer Function 62(PS_OUTPUT)
+ 65: 46(int) Constant 0
+ 68: TypePointer Function 61(fvec4)
+ 70: TypePointer Output 61(fvec4)
+ 71(Color): 70(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(e1_00): 7(ptr) Variable Function
+ 10(e1_01): 7(ptr) Variable Function
+ 12(e1_10): 7(ptr) Variable Function
+ 14(e1_11): 7(ptr) Variable Function
+ 16(e1_20): 7(ptr) Variable Function
+ 18(e1_21): 7(ptr) Variable Function
+ 20(e2_00): 7(ptr) Variable Function
+ 22(e2_01): 7(ptr) Variable Function
+ 24(e2_10): 7(ptr) Variable Function
+ 26(e2_11): 7(ptr) Variable Function
+ 28(e2_20): 7(ptr) Variable Function
+ 30(e2_21): 7(ptr) Variable Function
+ 34(r0a): 33(ptr) Variable Function
+ 36(r1a): 33(ptr) Variable Function
+ 38(r2a): 33(ptr) Variable Function
+ 40(r0b): 33(ptr) Variable Function
+ 51(indexable): 50(ptr) Variable Function
+ 54(r0c): 33(ptr) Variable Function
+ 64(psout): 63(ptr) Variable Function
+ Store 8(e1_00) 9
+ Store 10(e1_01) 11
+ Store 12(e1_10) 13
+ Store 14(e1_11) 15
+ Store 16(e1_20) 17
+ Store 18(e1_21) 19
+ Store 20(e2_00) 21
+ Store 22(e2_01) 23
+ Store 24(e2_10) 25
+ Store 26(e2_11) 27
+ Store 28(e2_20) 29
+ Store 30(e2_21) 31
+ Store 34(r0a) 35
+ Store 36(r1a) 37
+ Store 38(r2a) 39
+ 49: 46(int) Load 48(idx)
+ Store 51(indexable) 45
+ 52: 33(ptr) AccessChain 51(indexable) 49
+ 53: 32(fvec2) Load 52
+ Store 40(r0b) 53
+ 57: 46(int) Load 48(idx)
+ 59: 58(ptr) AccessChain 56(um) 57
+ 60: 32(fvec2) Load 59
+ Store 54(r0c) 60
+ 66: 6(float) Load 26(e2_11)
+ 67: 61(fvec4) CompositeConstruct 66 66 66 66
+ 69: 68(ptr) AccessChain 64(psout) 65
+ Store 69 67
+ 72: 68(ptr) AccessChain 64(psout) 65
+ 73: 61(fvec4) Load 72
+ Store 71(Color) 73
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out
index aad4799..d396be8 100755
--- a/Test/baseResults/hlsl.max.frag.out
+++ b/Test/baseResults/hlsl.max.frag.out
@@ -2,16 +2,22 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input1' (in 4-component vector of float)
-0:2 'input2' (in 4-component vector of float)
+0:2 'input1' (layout(location=0 ) in 4-component vector of float)
+0:2 'input2' (layout(location=1 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 max (global 4-component vector of float)
-0:3 'input1' (in 4-component vector of float)
-0:3 'input2' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 max (global 4-component vector of float)
+0:3 'input1' (layout(location=0 ) in 4-component vector of float)
+0:3 'input2' (layout(location=1 ) in 4-component vector of float)
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input1' (layout(location=0 ) in 4-component vector of float)
+0:? 'input2' (layout(location=1 ) in 4-component vector of float)
Linked fragment stage:
@@ -20,41 +26,53 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input1' (in 4-component vector of float)
-0:2 'input2' (in 4-component vector of float)
+0:2 'input1' (layout(location=0 ) in 4-component vector of float)
+0:2 'input2' (layout(location=1 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 max (global 4-component vector of float)
-0:3 'input1' (in 4-component vector of float)
-0:3 'input2' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 max (global 4-component vector of float)
+0:3 'input1' (layout(location=0 ) in 4-component vector of float)
+0:3 'input2' (layout(location=1 ) in 4-component vector of float)
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input1' (layout(location=0 ) in 4-component vector of float)
+0:? 'input2' (layout(location=1 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 15
+// Id's are bound by 17
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9 11
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11 13
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 9 "input1"
- Name 11 "input2"
+ Name 9 "@entryPointOutput"
+ Name 11 "input1"
+ Name 13 "input2"
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 11(input1) Location 0
+ Decorate 13(input2) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Input 7(fvec4)
- 9(input1): 8(ptr) Variable Input
- 11(input2): 8(ptr) Variable Input
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(input1): 10(ptr) Variable Input
+ 13(input2): 10(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
- 10: 7(fvec4) Load 9(input1)
- 12: 7(fvec4) Load 11(input2)
- 13: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 10 12
- ReturnValue 13
+ 12: 7(fvec4) Load 11(input1)
+ 14: 7(fvec4) Load 13(input2)
+ 15: 7(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 12 14
+ Store 9(@entryPointOutput) 15
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out
new file mode 100755
index 0000000..35ecaf5
--- /dev/null
+++ b/Test/baseResults/hlsl.multiEntry.vert.out
@@ -0,0 +1,111 @@
+hlsl.multiEntry.vert
+Shader version: 450
+0:? Sequence
+0:4 Function Definition: FakeEntrypoint(u1; (global 4-component vector of float)
+0:4 Function Parameters:
+0:4 'Index' (in uint)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 textureFetch (global 4-component vector of float)
+0:5 'Position' (uniform samplerBuffer)
+0:5 Convert uint to int (temp int)
+0:5 'Index' (in uint)
+0:9 Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position)
+0:9 Function Parameters:
+0:9 'Index' (in uint VertexIndex)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (out 4-component vector of float Position)
+0:10 Function Call: FakeEntrypoint(u1; (global 4-component vector of float)
+0:10 'Index' (in uint VertexIndex)
+0:10 Branch: Return
+0:? Linker Objects
+0:? 'Position' (uniform samplerBuffer)
+0:? '@entryPointOutput' (out 4-component vector of float Position)
+0:? 'Index' (in uint VertexIndex)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+0:? Sequence
+0:4 Function Definition: FakeEntrypoint(u1; (global 4-component vector of float)
+0:4 Function Parameters:
+0:4 'Index' (in uint)
+0:? Sequence
+0:5 Branch: Return with expression
+0:5 textureFetch (global 4-component vector of float)
+0:5 'Position' (uniform samplerBuffer)
+0:5 Convert uint to int (temp int)
+0:5 'Index' (in uint)
+0:9 Function Definition: RealEntrypoint(u1; (global 4-component vector of float Position)
+0:9 Function Parameters:
+0:9 'Index' (in uint VertexIndex)
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (out 4-component vector of float Position)
+0:10 Function Call: FakeEntrypoint(u1; (global 4-component vector of float)
+0:10 'Index' (in uint VertexIndex)
+0:10 Branch: Return
+0:? Linker Objects
+0:? 'Position' (uniform samplerBuffer)
+0:? '@entryPointOutput' (out 4-component vector of float Position)
+0:? 'Index' (in uint VertexIndex)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 34
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "RealEntrypoint" 27 29
+ Name 4 "RealEntrypoint"
+ Name 12 "FakeEntrypoint(u1;"
+ Name 11 "Index"
+ Name 17 "Position"
+ Name 27 "@entryPointOutput"
+ Name 29 "Index"
+ Name 30 "param"
+ Decorate 17(Position) DescriptorSet 0
+ Decorate 27(@entryPointOutput) BuiltIn Position
+ Decorate 29(Index) BuiltIn VertexIndex
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 0
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeVector 8(float) 4
+ 10: TypeFunction 9(fvec4) 7(ptr)
+ 14: TypeImage 8(float) Buffer sampled format:Unknown
+ 15: TypeSampledImage 14
+ 16: TypePointer UniformConstant 15
+ 17(Position): 16(ptr) Variable UniformConstant
+ 20: TypeInt 32 1
+ 26: TypePointer Output 9(fvec4)
+27(@entryPointOutput): 26(ptr) Variable Output
+ 28: TypePointer Input 6(int)
+ 29(Index): 28(ptr) Variable Input
+4(RealEntrypoint): 2 Function None 3
+ 5: Label
+ 30(param): 7(ptr) Variable Function
+ 31: 6(int) Load 29(Index)
+ Store 30(param) 31
+ 32: 9(fvec4) FunctionCall 12(FakeEntrypoint(u1;) 30(param)
+ Store 27(@entryPointOutput) 32
+ Return
+ FunctionEnd
+12(FakeEntrypoint(u1;): 9(fvec4) Function None 10
+ 11(Index): 7(ptr) FunctionParameter
+ 13: Label
+ 18: 15 Load 17(Position)
+ 19: 6(int) Load 11(Index)
+ 21: 20(int) Bitcast 19
+ 22: 14 Image 18
+ 23: 9(fvec4) ImageFetch 22 21
+ ReturnValue 23
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out
index 5ba5831..168065b 100644
--- a/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:21 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:5 Function Definition: main( (global structure{temp 4-component vector of float color})
0:5 Function Parameters:
0:? Sequence
0:7 Sequence
@@ -58,9 +58,17 @@
0:18 Construct vec4 (temp 4-component vector of float)
0:18 Convert int to float (temp float)
0:18 'r07' (temp int)
-0:19 Branch: Return with expression
-0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:19 color: direct index for structure (temp 4-component vector of float)
+0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:19 Constant:
+0:19 0 (const int)
+0:19 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
@@ -69,7 +77,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:21 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:5 Function Definition: main( (global structure{temp 4-component vector of float color})
0:5 Function Parameters:
0:? Sequence
0:7 Sequence
@@ -125,20 +133,27 @@
0:18 Construct vec4 (temp 4-component vector of float)
0:18 Convert int to float (temp float)
0:18 'r07' (temp int)
-0:19 Branch: Return with expression
-0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:19 color: direct index for structure (temp 4-component vector of float)
+0:19 'ps_output' (temp structure{temp 4-component vector of float color})
+0:19 Constant:
+0:19 0 (const int)
+0:19 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 41
+// Id's are bound by 44
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 40
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r00"
Name 12 "r01"
@@ -152,6 +167,8 @@
Name 30 "PS_OUTPUT"
MemberName 30(PS_OUTPUT) 0 "color"
Name 32 "ps_output"
+ Name 40 "color"
+ Decorate 40(color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -173,6 +190,8 @@
31: TypePointer Function 30(PS_OUTPUT)
33: 19(int) Constant 0
37: TypePointer Function 29(fvec4)
+ 39: TypePointer Output 29(fvec4)
+ 40(color): 39(ptr) Variable Output
4(main): 2 Function None 3
5: Label
8(r00): 7(ptr) Variable Function
@@ -199,6 +218,8 @@
36: 29(fvec4) CompositeConstruct 35 35 35 35
38: 37(ptr) AccessChain 32(ps_output) 33
Store 38 36
- 39:30(PS_OUTPUT) Load 32(ps_output)
- ReturnValue 39
+ 41: 37(ptr) AccessChain 32(ps_output) 33
+ 42: 29(fvec4) Load 41
+ Store 40(color) 42
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
new file mode 100755
index 0000000..0e0f470
--- /dev/null
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -0,0 +1,1592 @@
+hlsl.overload.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: foo1(d1;b1; (global void)
+0:2 Function Parameters:
+0:2 'a' (in double)
+0:2 'b' (in bool)
+0:3 Function Definition: foo1(d1;u1; (global void)
+0:3 Function Parameters:
+0:3 'a' (in double)
+0:3 'b' (in uint)
+0:4 Function Definition: foo1(d1;i1; (global void)
+0:4 Function Parameters:
+0:4 'a' (in double)
+0:4 'b' (in int)
+0:5 Function Definition: foo1(d1;f1; (global void)
+0:5 Function Parameters:
+0:5 'a' (in double)
+0:5 'b' (in float)
+0:6 Function Definition: foo1(d1;d1; (global void)
+0:6 Function Parameters:
+0:6 'a' (in double)
+0:6 'b' (in double)
+0:9 Function Definition: foo2(i1;b1; (global void)
+0:9 Function Parameters:
+0:9 'a' (in int)
+0:9 'b' (in bool)
+0:10 Function Definition: foo2(i1;u1; (global void)
+0:10 Function Parameters:
+0:10 'a' (in int)
+0:10 'b' (in uint)
+0:11 Function Definition: foo2(i1;i1; (global void)
+0:11 Function Parameters:
+0:11 'a' (in int)
+0:11 'b' (in int)
+0:12 Function Definition: foo2(i1;f1; (global void)
+0:12 Function Parameters:
+0:12 'a' (in int)
+0:12 'b' (in float)
+0:13 Function Definition: foo2(i1;d1; (global void)
+0:13 Function Parameters:
+0:13 'a' (in int)
+0:13 'b' (in double)
+0:16 Function Definition: foo3(b1; (global void)
+0:16 Function Parameters:
+0:16 'b' (in bool)
+0:17 Function Definition: foo4(u1; (global void)
+0:17 Function Parameters:
+0:17 'b' (in uint)
+0:18 Function Definition: foo5(i1; (global void)
+0:18 Function Parameters:
+0:18 'b' (in int)
+0:19 Function Definition: foo6(f1; (global void)
+0:19 Function Parameters:
+0:19 'b' (in float)
+0:20 Function Definition: foo7(d1; (global void)
+0:20 Function Parameters:
+0:20 'b' (in double)
+0:23 Function Definition: foo8(f1; (global void)
+0:23 Function Parameters:
+0:23 '' (in float)
+0:24 Function Definition: foo8(d1; (global void)
+0:24 Function Parameters:
+0:24 '' (in double)
+0:25 Function Definition: foo9(i1; (global void)
+0:25 Function Parameters:
+0:25 '' (in int)
+0:26 Function Definition: foo9(u1; (global void)
+0:26 Function Parameters:
+0:26 '' (in uint)
+0:27 Function Definition: foo10(b1; (global void)
+0:27 Function Parameters:
+0:27 '' (in bool)
+0:28 Function Definition: foo10(i1; (global void)
+0:28 Function Parameters:
+0:28 '' (in int)
+0:31 Function Definition: foo11(vf3; (global void)
+0:31 Function Parameters:
+0:31 '' (in 3-component vector of float)
+0:32 Function Definition: foo11(d1; (global void)
+0:32 Function Parameters:
+0:32 '' (in double)
+0:33 Function Definition: foo11(vi3; (global void)
+0:33 Function Parameters:
+0:33 '' (in 3-component vector of int)
+0:34 Function Definition: foo11(u1; (global void)
+0:34 Function Parameters:
+0:34 '' (in uint)
+0:35 Function Definition: foo12(vf1; (global void)
+0:35 Function Parameters:
+0:35 '' (in 1-component vector of float)
+0:36 Function Definition: foo12(vd3; (global void)
+0:36 Function Parameters:
+0:36 '' (in 3-component vector of double)
+0:37 Function Definition: foo16(u1; (global void)
+0:37 Function Parameters:
+0:37 '' (in uint)
+0:38 Function Definition: foo16(vu2; (global void)
+0:38 Function Parameters:
+0:38 '' (in 2-component vector of uint)
+0:41 Function Definition: foo13(vf3; (global void)
+0:41 Function Parameters:
+0:41 '' (in 3-component vector of float)
+0:42 Function Definition: foo14(vi1; (global void)
+0:42 Function Parameters:
+0:42 '' (in 1-component vector of int)
+0:43 Function Definition: foo15(vb1; (global void)
+0:43 Function Parameters:
+0:43 '' (in 1-component vector of bool)
+0:46 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:46 Function Parameters:
+0:46 'input' (layout(location=0 ) in 4-component vector of float)
+0:? Sequence
+0:53 Function Call: foo1(d1;b1; (global void)
+0:53 'd' (temp double)
+0:53 'b' (temp bool)
+0:54 Function Call: foo1(d1;d1; (global void)
+0:54 'd' (temp double)
+0:54 'd' (temp double)
+0:55 Function Call: foo1(d1;u1; (global void)
+0:55 'd' (temp double)
+0:55 'u' (temp uint)
+0:56 Function Call: foo1(d1;i1; (global void)
+0:56 'd' (temp double)
+0:56 'i' (temp int)
+0:57 Function Call: foo1(d1;f1; (global void)
+0:57 'd' (temp double)
+0:57 'f' (temp float)
+0:59 Function Call: foo1(d1;b1; (global void)
+0:59 Convert float to double (temp double)
+0:59 'f' (temp float)
+0:59 'b' (temp bool)
+0:60 Function Call: foo1(d1;d1; (global void)
+0:60 Convert float to double (temp double)
+0:60 'f' (temp float)
+0:60 'd' (temp double)
+0:61 Function Call: foo1(d1;u1; (global void)
+0:61 Convert float to double (temp double)
+0:61 'f' (temp float)
+0:61 'u' (temp uint)
+0:62 Function Call: foo1(d1;i1; (global void)
+0:62 Convert float to double (temp double)
+0:62 'f' (temp float)
+0:62 'i' (temp int)
+0:63 Function Call: foo1(d1;f1; (global void)
+0:63 Convert float to double (temp double)
+0:63 'f' (temp float)
+0:63 'f' (temp float)
+0:65 Function Call: foo1(d1;b1; (global void)
+0:65 Convert uint to double (temp double)
+0:65 'u' (temp uint)
+0:65 'b' (temp bool)
+0:66 Function Call: foo1(d1;d1; (global void)
+0:66 Convert uint to double (temp double)
+0:66 'u' (temp uint)
+0:66 'd' (temp double)
+0:67 Function Call: foo1(d1;u1; (global void)
+0:67 Convert uint to double (temp double)
+0:67 'u' (temp uint)
+0:67 'u' (temp uint)
+0:68 Function Call: foo1(d1;i1; (global void)
+0:68 Convert uint to double (temp double)
+0:68 'u' (temp uint)
+0:68 'i' (temp int)
+0:69 Function Call: foo1(d1;f1; (global void)
+0:69 Convert uint to double (temp double)
+0:69 'u' (temp uint)
+0:69 'f' (temp float)
+0:71 Function Call: foo1(d1;b1; (global void)
+0:71 Convert int to double (temp double)
+0:71 'i' (temp int)
+0:71 'b' (temp bool)
+0:72 Function Call: foo1(d1;d1; (global void)
+0:72 Convert int to double (temp double)
+0:72 'i' (temp int)
+0:72 'd' (temp double)
+0:73 Function Call: foo1(d1;u1; (global void)
+0:73 Convert int to double (temp double)
+0:73 'i' (temp int)
+0:73 'u' (temp uint)
+0:74 Function Call: foo1(d1;i1; (global void)
+0:74 Convert int to double (temp double)
+0:74 'i' (temp int)
+0:74 'i' (temp int)
+0:75 Function Call: foo1(d1;f1; (global void)
+0:75 Convert int to double (temp double)
+0:75 'i' (temp int)
+0:75 'f' (temp float)
+0:77 Function Call: foo2(i1;b1; (global void)
+0:77 Convert uint to int (temp int)
+0:77 'u' (temp uint)
+0:77 'b' (temp bool)
+0:78 Function Call: foo2(i1;d1; (global void)
+0:78 Convert uint to int (temp int)
+0:78 'u' (temp uint)
+0:78 'd' (temp double)
+0:79 Function Call: foo2(i1;u1; (global void)
+0:79 Convert uint to int (temp int)
+0:79 'u' (temp uint)
+0:79 'u' (temp uint)
+0:80 Function Call: foo2(i1;i1; (global void)
+0:80 Convert uint to int (temp int)
+0:80 'u' (temp uint)
+0:80 'i' (temp int)
+0:81 Function Call: foo2(i1;f1; (global void)
+0:81 Convert uint to int (temp int)
+0:81 'u' (temp uint)
+0:81 'f' (temp float)
+0:83 Function Call: foo2(i1;b1; (global void)
+0:83 'i' (temp int)
+0:83 'b' (temp bool)
+0:84 Function Call: foo2(i1;d1; (global void)
+0:84 'i' (temp int)
+0:84 'd' (temp double)
+0:85 Function Call: foo2(i1;u1; (global void)
+0:85 'i' (temp int)
+0:85 'u' (temp uint)
+0:86 Function Call: foo2(i1;i1; (global void)
+0:86 'i' (temp int)
+0:86 'i' (temp int)
+0:87 Function Call: foo2(i1;f1; (global void)
+0:87 'i' (temp int)
+0:87 'f' (temp float)
+0:89 Function Call: foo3(b1; (global void)
+0:89 'b' (temp bool)
+0:90 Function Call: foo3(b1; (global void)
+0:90 Convert double to bool (temp bool)
+0:90 'd' (temp double)
+0:91 Function Call: foo3(b1; (global void)
+0:91 Convert uint to bool (temp bool)
+0:91 'u' (temp uint)
+0:92 Function Call: foo3(b1; (global void)
+0:92 Convert int to bool (temp bool)
+0:92 'i' (temp int)
+0:93 Function Call: foo3(b1; (global void)
+0:93 Convert float to bool (temp bool)
+0:93 'f' (temp float)
+0:95 Function Call: foo4(u1; (global void)
+0:95 Convert bool to uint (temp uint)
+0:95 'b' (temp bool)
+0:96 Function Call: foo4(u1; (global void)
+0:96 Convert double to uint (temp uint)
+0:96 'd' (temp double)
+0:97 Function Call: foo4(u1; (global void)
+0:97 'u' (temp uint)
+0:98 Function Call: foo4(u1; (global void)
+0:98 Convert int to uint (temp uint)
+0:98 'i' (temp int)
+0:99 Function Call: foo4(u1; (global void)
+0:99 Convert float to uint (temp uint)
+0:99 'f' (temp float)
+0:101 Function Call: foo5(i1; (global void)
+0:101 Convert bool to int (temp int)
+0:101 'b' (temp bool)
+0:102 Function Call: foo5(i1; (global void)
+0:102 Convert double to int (temp int)
+0:102 'd' (temp double)
+0:103 Function Call: foo5(i1; (global void)
+0:103 Convert uint to int (temp int)
+0:103 'u' (temp uint)
+0:104 Function Call: foo5(i1; (global void)
+0:104 'i' (temp int)
+0:105 Function Call: foo5(i1; (global void)
+0:105 Convert float to int (temp int)
+0:105 'f' (temp float)
+0:107 Function Call: foo6(f1; (global void)
+0:107 Convert bool to float (temp float)
+0:107 'b' (temp bool)
+0:108 Function Call: foo6(f1; (global void)
+0:108 Convert double to float (temp float)
+0:108 'd' (temp double)
+0:109 Function Call: foo6(f1; (global void)
+0:109 Convert uint to float (temp float)
+0:109 'u' (temp uint)
+0:110 Function Call: foo6(f1; (global void)
+0:110 Convert int to float (temp float)
+0:110 'i' (temp int)
+0:111 Function Call: foo6(f1; (global void)
+0:111 'f' (temp float)
+0:113 Function Call: foo7(d1; (global void)
+0:113 Convert bool to double (temp double)
+0:113 'b' (temp bool)
+0:114 Function Call: foo7(d1; (global void)
+0:114 'd' (temp double)
+0:115 Function Call: foo7(d1; (global void)
+0:115 Convert uint to double (temp double)
+0:115 'u' (temp uint)
+0:116 Function Call: foo7(d1; (global void)
+0:116 Convert int to double (temp double)
+0:116 'i' (temp int)
+0:117 Function Call: foo7(d1; (global void)
+0:117 Convert float to double (temp double)
+0:117 'f' (temp float)
+0:119 Function Call: foo8(f1; (global void)
+0:119 Convert bool to float (temp float)
+0:119 'b' (temp bool)
+0:120 Function Call: foo8(f1; (global void)
+0:120 Convert uint to float (temp float)
+0:120 'u' (temp uint)
+0:121 Function Call: foo8(f1; (global void)
+0:121 Convert int to float (temp float)
+0:121 'i' (temp int)
+0:123 Function Call: foo9(i1; (global void)
+0:123 Convert bool to int (temp int)
+0:123 'b' (temp bool)
+0:124 Function Call: foo9(u1; (global void)
+0:124 Convert float to uint (temp uint)
+0:124 'f' (temp float)
+0:125 Function Call: foo9(u1; (global void)
+0:125 Convert double to uint (temp uint)
+0:125 'd' (temp double)
+0:127 Function Call: foo10(i1; (global void)
+0:127 Convert uint to int (temp int)
+0:127 'u' (temp uint)
+0:128 Function Call: foo10(i1; (global void)
+0:128 Convert float to int (temp int)
+0:128 'f' (temp float)
+0:129 Function Call: foo10(i1; (global void)
+0:129 Convert double to int (temp int)
+0:129 'd' (temp double)
+0:131 Function Call: foo11(u1; (global void)
+0:131 Convert bool to uint (temp uint)
+0:131 'b' (temp bool)
+0:132 Function Call: foo11(d1; (global void)
+0:132 Convert float to double (temp double)
+0:132 'f' (temp float)
+0:133 Function Call: foo12(vd3; (global void)
+0:133 Convert float to double (temp 3-component vector of double)
+0:133 Construct vec3 (temp 3-component vector of float)
+0:133 'f' (temp float)
+0:134 Function Call: foo16(vu2; (global void)
+0:? Convert int to uint (temp 2-component vector of uint)
+0:? Construct ivec2 (temp 2-component vector of int)
+0:134 'i' (temp int)
+0:134 'i' (temp int)
+0:136 Function Call: foo13(vf3; (global void)
+0:136 Construct vec3 (in 3-component vector of float)
+0:136 'f' (temp float)
+0:137 Function Call: foo14(vi1; (global void)
+0:137 Construct int (in 1-component vector of int)
+0:137 Construct ivec4 (temp 4-component vector of int)
+0:137 'i' (temp int)
+0:138 Function Call: foo15(vb1; (global void)
+0:138 Construct bool (in 1-component vector of bool)
+0:138 'b' (temp bool)
+0:139 Function Call: foo15(vb1; (global void)
+0:139 Construct bool (in 1-component vector of bool)
+0:139 Construct bvec3 (temp 3-component vector of bool)
+0:139 'b' (temp bool)
+0:141 Sequence
+0:141 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:141 'input' (layout(location=0 ) in 4-component vector of float)
+0:141 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: foo1(d1;b1; (global void)
+0:2 Function Parameters:
+0:2 'a' (in double)
+0:2 'b' (in bool)
+0:3 Function Definition: foo1(d1;u1; (global void)
+0:3 Function Parameters:
+0:3 'a' (in double)
+0:3 'b' (in uint)
+0:4 Function Definition: foo1(d1;i1; (global void)
+0:4 Function Parameters:
+0:4 'a' (in double)
+0:4 'b' (in int)
+0:5 Function Definition: foo1(d1;f1; (global void)
+0:5 Function Parameters:
+0:5 'a' (in double)
+0:5 'b' (in float)
+0:6 Function Definition: foo1(d1;d1; (global void)
+0:6 Function Parameters:
+0:6 'a' (in double)
+0:6 'b' (in double)
+0:9 Function Definition: foo2(i1;b1; (global void)
+0:9 Function Parameters:
+0:9 'a' (in int)
+0:9 'b' (in bool)
+0:10 Function Definition: foo2(i1;u1; (global void)
+0:10 Function Parameters:
+0:10 'a' (in int)
+0:10 'b' (in uint)
+0:11 Function Definition: foo2(i1;i1; (global void)
+0:11 Function Parameters:
+0:11 'a' (in int)
+0:11 'b' (in int)
+0:12 Function Definition: foo2(i1;f1; (global void)
+0:12 Function Parameters:
+0:12 'a' (in int)
+0:12 'b' (in float)
+0:13 Function Definition: foo2(i1;d1; (global void)
+0:13 Function Parameters:
+0:13 'a' (in int)
+0:13 'b' (in double)
+0:16 Function Definition: foo3(b1; (global void)
+0:16 Function Parameters:
+0:16 'b' (in bool)
+0:17 Function Definition: foo4(u1; (global void)
+0:17 Function Parameters:
+0:17 'b' (in uint)
+0:18 Function Definition: foo5(i1; (global void)
+0:18 Function Parameters:
+0:18 'b' (in int)
+0:19 Function Definition: foo6(f1; (global void)
+0:19 Function Parameters:
+0:19 'b' (in float)
+0:20 Function Definition: foo7(d1; (global void)
+0:20 Function Parameters:
+0:20 'b' (in double)
+0:23 Function Definition: foo8(f1; (global void)
+0:23 Function Parameters:
+0:23 '' (in float)
+0:24 Function Definition: foo8(d1; (global void)
+0:24 Function Parameters:
+0:24 '' (in double)
+0:25 Function Definition: foo9(i1; (global void)
+0:25 Function Parameters:
+0:25 '' (in int)
+0:26 Function Definition: foo9(u1; (global void)
+0:26 Function Parameters:
+0:26 '' (in uint)
+0:27 Function Definition: foo10(b1; (global void)
+0:27 Function Parameters:
+0:27 '' (in bool)
+0:28 Function Definition: foo10(i1; (global void)
+0:28 Function Parameters:
+0:28 '' (in int)
+0:31 Function Definition: foo11(vf3; (global void)
+0:31 Function Parameters:
+0:31 '' (in 3-component vector of float)
+0:32 Function Definition: foo11(d1; (global void)
+0:32 Function Parameters:
+0:32 '' (in double)
+0:33 Function Definition: foo11(vi3; (global void)
+0:33 Function Parameters:
+0:33 '' (in 3-component vector of int)
+0:34 Function Definition: foo11(u1; (global void)
+0:34 Function Parameters:
+0:34 '' (in uint)
+0:35 Function Definition: foo12(vf1; (global void)
+0:35 Function Parameters:
+0:35 '' (in 1-component vector of float)
+0:36 Function Definition: foo12(vd3; (global void)
+0:36 Function Parameters:
+0:36 '' (in 3-component vector of double)
+0:37 Function Definition: foo16(u1; (global void)
+0:37 Function Parameters:
+0:37 '' (in uint)
+0:38 Function Definition: foo16(vu2; (global void)
+0:38 Function Parameters:
+0:38 '' (in 2-component vector of uint)
+0:41 Function Definition: foo13(vf3; (global void)
+0:41 Function Parameters:
+0:41 '' (in 3-component vector of float)
+0:42 Function Definition: foo14(vi1; (global void)
+0:42 Function Parameters:
+0:42 '' (in 1-component vector of int)
+0:43 Function Definition: foo15(vb1; (global void)
+0:43 Function Parameters:
+0:43 '' (in 1-component vector of bool)
+0:46 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:46 Function Parameters:
+0:46 'input' (layout(location=0 ) in 4-component vector of float)
+0:? Sequence
+0:53 Function Call: foo1(d1;b1; (global void)
+0:53 'd' (temp double)
+0:53 'b' (temp bool)
+0:54 Function Call: foo1(d1;d1; (global void)
+0:54 'd' (temp double)
+0:54 'd' (temp double)
+0:55 Function Call: foo1(d1;u1; (global void)
+0:55 'd' (temp double)
+0:55 'u' (temp uint)
+0:56 Function Call: foo1(d1;i1; (global void)
+0:56 'd' (temp double)
+0:56 'i' (temp int)
+0:57 Function Call: foo1(d1;f1; (global void)
+0:57 'd' (temp double)
+0:57 'f' (temp float)
+0:59 Function Call: foo1(d1;b1; (global void)
+0:59 Convert float to double (temp double)
+0:59 'f' (temp float)
+0:59 'b' (temp bool)
+0:60 Function Call: foo1(d1;d1; (global void)
+0:60 Convert float to double (temp double)
+0:60 'f' (temp float)
+0:60 'd' (temp double)
+0:61 Function Call: foo1(d1;u1; (global void)
+0:61 Convert float to double (temp double)
+0:61 'f' (temp float)
+0:61 'u' (temp uint)
+0:62 Function Call: foo1(d1;i1; (global void)
+0:62 Convert float to double (temp double)
+0:62 'f' (temp float)
+0:62 'i' (temp int)
+0:63 Function Call: foo1(d1;f1; (global void)
+0:63 Convert float to double (temp double)
+0:63 'f' (temp float)
+0:63 'f' (temp float)
+0:65 Function Call: foo1(d1;b1; (global void)
+0:65 Convert uint to double (temp double)
+0:65 'u' (temp uint)
+0:65 'b' (temp bool)
+0:66 Function Call: foo1(d1;d1; (global void)
+0:66 Convert uint to double (temp double)
+0:66 'u' (temp uint)
+0:66 'd' (temp double)
+0:67 Function Call: foo1(d1;u1; (global void)
+0:67 Convert uint to double (temp double)
+0:67 'u' (temp uint)
+0:67 'u' (temp uint)
+0:68 Function Call: foo1(d1;i1; (global void)
+0:68 Convert uint to double (temp double)
+0:68 'u' (temp uint)
+0:68 'i' (temp int)
+0:69 Function Call: foo1(d1;f1; (global void)
+0:69 Convert uint to double (temp double)
+0:69 'u' (temp uint)
+0:69 'f' (temp float)
+0:71 Function Call: foo1(d1;b1; (global void)
+0:71 Convert int to double (temp double)
+0:71 'i' (temp int)
+0:71 'b' (temp bool)
+0:72 Function Call: foo1(d1;d1; (global void)
+0:72 Convert int to double (temp double)
+0:72 'i' (temp int)
+0:72 'd' (temp double)
+0:73 Function Call: foo1(d1;u1; (global void)
+0:73 Convert int to double (temp double)
+0:73 'i' (temp int)
+0:73 'u' (temp uint)
+0:74 Function Call: foo1(d1;i1; (global void)
+0:74 Convert int to double (temp double)
+0:74 'i' (temp int)
+0:74 'i' (temp int)
+0:75 Function Call: foo1(d1;f1; (global void)
+0:75 Convert int to double (temp double)
+0:75 'i' (temp int)
+0:75 'f' (temp float)
+0:77 Function Call: foo2(i1;b1; (global void)
+0:77 Convert uint to int (temp int)
+0:77 'u' (temp uint)
+0:77 'b' (temp bool)
+0:78 Function Call: foo2(i1;d1; (global void)
+0:78 Convert uint to int (temp int)
+0:78 'u' (temp uint)
+0:78 'd' (temp double)
+0:79 Function Call: foo2(i1;u1; (global void)
+0:79 Convert uint to int (temp int)
+0:79 'u' (temp uint)
+0:79 'u' (temp uint)
+0:80 Function Call: foo2(i1;i1; (global void)
+0:80 Convert uint to int (temp int)
+0:80 'u' (temp uint)
+0:80 'i' (temp int)
+0:81 Function Call: foo2(i1;f1; (global void)
+0:81 Convert uint to int (temp int)
+0:81 'u' (temp uint)
+0:81 'f' (temp float)
+0:83 Function Call: foo2(i1;b1; (global void)
+0:83 'i' (temp int)
+0:83 'b' (temp bool)
+0:84 Function Call: foo2(i1;d1; (global void)
+0:84 'i' (temp int)
+0:84 'd' (temp double)
+0:85 Function Call: foo2(i1;u1; (global void)
+0:85 'i' (temp int)
+0:85 'u' (temp uint)
+0:86 Function Call: foo2(i1;i1; (global void)
+0:86 'i' (temp int)
+0:86 'i' (temp int)
+0:87 Function Call: foo2(i1;f1; (global void)
+0:87 'i' (temp int)
+0:87 'f' (temp float)
+0:89 Function Call: foo3(b1; (global void)
+0:89 'b' (temp bool)
+0:90 Function Call: foo3(b1; (global void)
+0:90 Convert double to bool (temp bool)
+0:90 'd' (temp double)
+0:91 Function Call: foo3(b1; (global void)
+0:91 Convert uint to bool (temp bool)
+0:91 'u' (temp uint)
+0:92 Function Call: foo3(b1; (global void)
+0:92 Convert int to bool (temp bool)
+0:92 'i' (temp int)
+0:93 Function Call: foo3(b1; (global void)
+0:93 Convert float to bool (temp bool)
+0:93 'f' (temp float)
+0:95 Function Call: foo4(u1; (global void)
+0:95 Convert bool to uint (temp uint)
+0:95 'b' (temp bool)
+0:96 Function Call: foo4(u1; (global void)
+0:96 Convert double to uint (temp uint)
+0:96 'd' (temp double)
+0:97 Function Call: foo4(u1; (global void)
+0:97 'u' (temp uint)
+0:98 Function Call: foo4(u1; (global void)
+0:98 Convert int to uint (temp uint)
+0:98 'i' (temp int)
+0:99 Function Call: foo4(u1; (global void)
+0:99 Convert float to uint (temp uint)
+0:99 'f' (temp float)
+0:101 Function Call: foo5(i1; (global void)
+0:101 Convert bool to int (temp int)
+0:101 'b' (temp bool)
+0:102 Function Call: foo5(i1; (global void)
+0:102 Convert double to int (temp int)
+0:102 'd' (temp double)
+0:103 Function Call: foo5(i1; (global void)
+0:103 Convert uint to int (temp int)
+0:103 'u' (temp uint)
+0:104 Function Call: foo5(i1; (global void)
+0:104 'i' (temp int)
+0:105 Function Call: foo5(i1; (global void)
+0:105 Convert float to int (temp int)
+0:105 'f' (temp float)
+0:107 Function Call: foo6(f1; (global void)
+0:107 Convert bool to float (temp float)
+0:107 'b' (temp bool)
+0:108 Function Call: foo6(f1; (global void)
+0:108 Convert double to float (temp float)
+0:108 'd' (temp double)
+0:109 Function Call: foo6(f1; (global void)
+0:109 Convert uint to float (temp float)
+0:109 'u' (temp uint)
+0:110 Function Call: foo6(f1; (global void)
+0:110 Convert int to float (temp float)
+0:110 'i' (temp int)
+0:111 Function Call: foo6(f1; (global void)
+0:111 'f' (temp float)
+0:113 Function Call: foo7(d1; (global void)
+0:113 Convert bool to double (temp double)
+0:113 'b' (temp bool)
+0:114 Function Call: foo7(d1; (global void)
+0:114 'd' (temp double)
+0:115 Function Call: foo7(d1; (global void)
+0:115 Convert uint to double (temp double)
+0:115 'u' (temp uint)
+0:116 Function Call: foo7(d1; (global void)
+0:116 Convert int to double (temp double)
+0:116 'i' (temp int)
+0:117 Function Call: foo7(d1; (global void)
+0:117 Convert float to double (temp double)
+0:117 'f' (temp float)
+0:119 Function Call: foo8(f1; (global void)
+0:119 Convert bool to float (temp float)
+0:119 'b' (temp bool)
+0:120 Function Call: foo8(f1; (global void)
+0:120 Convert uint to float (temp float)
+0:120 'u' (temp uint)
+0:121 Function Call: foo8(f1; (global void)
+0:121 Convert int to float (temp float)
+0:121 'i' (temp int)
+0:123 Function Call: foo9(i1; (global void)
+0:123 Convert bool to int (temp int)
+0:123 'b' (temp bool)
+0:124 Function Call: foo9(u1; (global void)
+0:124 Convert float to uint (temp uint)
+0:124 'f' (temp float)
+0:125 Function Call: foo9(u1; (global void)
+0:125 Convert double to uint (temp uint)
+0:125 'd' (temp double)
+0:127 Function Call: foo10(i1; (global void)
+0:127 Convert uint to int (temp int)
+0:127 'u' (temp uint)
+0:128 Function Call: foo10(i1; (global void)
+0:128 Convert float to int (temp int)
+0:128 'f' (temp float)
+0:129 Function Call: foo10(i1; (global void)
+0:129 Convert double to int (temp int)
+0:129 'd' (temp double)
+0:131 Function Call: foo11(u1; (global void)
+0:131 Convert bool to uint (temp uint)
+0:131 'b' (temp bool)
+0:132 Function Call: foo11(d1; (global void)
+0:132 Convert float to double (temp double)
+0:132 'f' (temp float)
+0:133 Function Call: foo12(vd3; (global void)
+0:133 Convert float to double (temp 3-component vector of double)
+0:133 Construct vec3 (temp 3-component vector of float)
+0:133 'f' (temp float)
+0:134 Function Call: foo16(vu2; (global void)
+0:? Convert int to uint (temp 2-component vector of uint)
+0:? Construct ivec2 (temp 2-component vector of int)
+0:134 'i' (temp int)
+0:134 'i' (temp int)
+0:136 Function Call: foo13(vf3; (global void)
+0:136 Construct vec3 (in 3-component vector of float)
+0:136 'f' (temp float)
+0:137 Function Call: foo14(vi1; (global void)
+0:137 Construct int (in 1-component vector of int)
+0:137 Construct ivec4 (temp 4-component vector of int)
+0:137 'i' (temp int)
+0:138 Function Call: foo15(vb1; (global void)
+0:138 Construct bool (in 1-component vector of bool)
+0:138 'b' (temp bool)
+0:139 Function Call: foo15(vb1; (global void)
+0:139 Construct bool (in 1-component vector of bool)
+0:139 Construct bvec3 (temp 3-component vector of bool)
+0:139 'b' (temp bool)
+0:141 Sequence
+0:141 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:141 'input' (layout(location=0 ) in 4-component vector of float)
+0:141 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 509
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "PixelShaderFunction" 504 506
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "PixelShaderFunction"
+ Name 13 "foo1(d1;b1;"
+ Name 11 "a"
+ Name 12 "b"
+ Name 20 "foo1(d1;u1;"
+ Name 18 "a"
+ Name 19 "b"
+ Name 27 "foo1(d1;i1;"
+ Name 25 "a"
+ Name 26 "b"
+ Name 34 "foo1(d1;f1;"
+ Name 32 "a"
+ Name 33 "b"
+ Name 39 "foo1(d1;d1;"
+ Name 37 "a"
+ Name 38 "b"
+ Name 44 "foo2(i1;b1;"
+ Name 42 "a"
+ Name 43 "b"
+ Name 49 "foo2(i1;u1;"
+ Name 47 "a"
+ Name 48 "b"
+ Name 54 "foo2(i1;i1;"
+ Name 52 "a"
+ Name 53 "b"
+ Name 59 "foo2(i1;f1;"
+ Name 57 "a"
+ Name 58 "b"
+ Name 64 "foo2(i1;d1;"
+ Name 62 "a"
+ Name 63 "b"
+ Name 68 "foo3(b1;"
+ Name 67 "b"
+ Name 72 "foo4(u1;"
+ Name 71 "b"
+ Name 76 "foo5(i1;"
+ Name 75 "b"
+ Name 80 "foo6(f1;"
+ Name 79 "b"
+ Name 84 "foo7(d1;"
+ Name 83 "b"
+ Name 87 "foo8(f1;"
+ Name 86 ""
+ Name 90 "foo8(d1;"
+ Name 89 ""
+ Name 93 "foo9(i1;"
+ Name 92 ""
+ Name 96 "foo9(u1;"
+ Name 95 ""
+ Name 99 "foo10(b1;"
+ Name 98 ""
+ Name 102 "foo10(i1;"
+ Name 101 ""
+ Name 108 "foo11(vf3;"
+ Name 107 ""
+ Name 111 "foo11(d1;"
+ Name 110 ""
+ Name 117 "foo11(vi3;"
+ Name 116 ""
+ Name 120 "foo11(u1;"
+ Name 119 ""
+ Name 123 "foo12(vf1;"
+ Name 122 ""
+ Name 129 "foo12(vd3;"
+ Name 128 ""
+ Name 132 "foo16(u1;"
+ Name 131 ""
+ Name 138 "foo16(vu2;"
+ Name 137 ""
+ Name 141 "foo13(vf3;"
+ Name 140 ""
+ Name 144 "foo14(vi1;"
+ Name 143 ""
+ Name 147 "foo15(vb1;"
+ Name 146 ""
+ Name 149 "d"
+ Name 150 "b"
+ Name 151 "param"
+ Name 153 "param"
+ Name 156 "param"
+ Name 158 "param"
+ Name 161 "u"
+ Name 162 "param"
+ Name 164 "param"
+ Name 167 "i"
+ Name 168 "param"
+ Name 170 "param"
+ Name 173 "f"
+ Name 174 "param"
+ Name 176 "param"
+ Name 181 "param"
+ Name 182 "param"
+ Name 187 "param"
+ Name 188 "param"
+ Name 193 "param"
+ Name 194 "param"
+ Name 199 "param"
+ Name 200 "param"
+ Name 205 "param"
+ Name 206 "param"
+ Name 211 "param"
+ Name 212 "param"
+ Name 217 "param"
+ Name 218 "param"
+ Name 223 "param"
+ Name 224 "param"
+ Name 229 "param"
+ Name 230 "param"
+ Name 235 "param"
+ Name 236 "param"
+ Name 241 "param"
+ Name 242 "param"
+ Name 247 "param"
+ Name 248 "param"
+ Name 253 "param"
+ Name 254 "param"
+ Name 259 "param"
+ Name 260 "param"
+ Name 265 "param"
+ Name 266 "param"
+ Name 271 "param"
+ Name 272 "param"
+ Name 277 "param"
+ Name 278 "param"
+ Name 283 "param"
+ Name 284 "param"
+ Name 289 "param"
+ Name 290 "param"
+ Name 295 "param"
+ Name 296 "param"
+ Name 299 "param"
+ Name 301 "param"
+ Name 304 "param"
+ Name 306 "param"
+ Name 309 "param"
+ Name 311 "param"
+ Name 314 "param"
+ Name 316 "param"
+ Name 319 "param"
+ Name 321 "param"
+ Name 324 "param"
+ Name 330 "param"
+ Name 335 "param"
+ Name 339 "param"
+ Name 344 "param"
+ Name 349 "param"
+ Name 353 "param"
+ Name 355 "param"
+ Name 360 "param"
+ Name 364 "param"
+ Name 370 "param"
+ Name 374 "param"
+ Name 378 "param"
+ Name 380 "param"
+ Name 385 "param"
+ Name 390 "param"
+ Name 394 "param"
+ Name 398 "param"
+ Name 402 "param"
+ Name 404 "param"
+ Name 410 "param"
+ Name 412 "param"
+ Name 417 "param"
+ Name 421 "param"
+ Name 425 "param"
+ Name 429 "param"
+ Name 433 "param"
+ Name 437 "param"
+ Name 441 "param"
+ Name 445 "param"
+ Name 449 "param"
+ Name 453 "param"
+ Name 457 "param"
+ Name 461 "param"
+ Name 465 "param"
+ Name 469 "param"
+ Name 474 "param"
+ Name 481 "param"
+ Name 485 "param"
+ Name 491 "param"
+ Name 494 "param"
+ Name 500 "param"
+ Name 504 "@entryPointOutput"
+ Name 506 "input"
+ Decorate 504(@entryPointOutput) Location 0
+ Decorate 506(input) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 64
+ 7: TypePointer Function 6(float)
+ 8: TypeBool
+ 9: TypePointer Function 8(bool)
+ 10: TypeFunction 2 7(ptr) 9(ptr)
+ 15: TypeInt 32 0
+ 16: TypePointer Function 15(int)
+ 17: TypeFunction 2 7(ptr) 16(ptr)
+ 22: TypeInt 32 1
+ 23: TypePointer Function 22(int)
+ 24: TypeFunction 2 7(ptr) 23(ptr)
+ 29: TypeFloat 32
+ 30: TypePointer Function 29(float)
+ 31: TypeFunction 2 7(ptr) 30(ptr)
+ 36: TypeFunction 2 7(ptr) 7(ptr)
+ 41: TypeFunction 2 23(ptr) 9(ptr)
+ 46: TypeFunction 2 23(ptr) 16(ptr)
+ 51: TypeFunction 2 23(ptr) 23(ptr)
+ 56: TypeFunction 2 23(ptr) 30(ptr)
+ 61: TypeFunction 2 23(ptr) 7(ptr)
+ 66: TypeFunction 2 9(ptr)
+ 70: TypeFunction 2 16(ptr)
+ 74: TypeFunction 2 23(ptr)
+ 78: TypeFunction 2 30(ptr)
+ 82: TypeFunction 2 7(ptr)
+ 104: TypeVector 29(float) 3
+ 105: TypePointer Function 104(fvec3)
+ 106: TypeFunction 2 105(ptr)
+ 113: TypeVector 22(int) 3
+ 114: TypePointer Function 113(ivec3)
+ 115: TypeFunction 2 114(ptr)
+ 125: TypeVector 6(float) 3
+ 126: TypePointer Function 125(fvec3)
+ 127: TypeFunction 2 126(ptr)
+ 134: TypeVector 15(int) 2
+ 135: TypePointer Function 134(ivec2)
+ 136: TypeFunction 2 135(ptr)
+ 328: 6(float) Constant 0 0
+ 333: 15(int) Constant 0
+ 342: 29(float) Constant 0
+ 347: 15(int) Constant 1
+ 367: 22(int) Constant 0
+ 368: 22(int) Constant 1
+ 388: 29(float) Constant 1065353216
+ 408: 6(float) Constant 0 1072693248
+ 478: TypeVector 22(int) 2
+ 488: TypeVector 22(int) 4
+ 497: TypeVector 8(bool) 3
+ 502: TypeVector 29(float) 4
+ 503: TypePointer Output 502(fvec4)
+504(@entryPointOutput): 503(ptr) Variable Output
+ 505: TypePointer Input 502(fvec4)
+ 506(input): 505(ptr) Variable Input
+4(PixelShaderFunction): 2 Function None 3
+ 5: Label
+ 149(d): 7(ptr) Variable Function
+ 150(b): 9(ptr) Variable Function
+ 151(param): 7(ptr) Variable Function
+ 153(param): 9(ptr) Variable Function
+ 156(param): 7(ptr) Variable Function
+ 158(param): 7(ptr) Variable Function
+ 161(u): 16(ptr) Variable Function
+ 162(param): 7(ptr) Variable Function
+ 164(param): 16(ptr) Variable Function
+ 167(i): 23(ptr) Variable Function
+ 168(param): 7(ptr) Variable Function
+ 170(param): 23(ptr) Variable Function
+ 173(f): 30(ptr) Variable Function
+ 174(param): 7(ptr) Variable Function
+ 176(param): 30(ptr) Variable Function
+ 181(param): 7(ptr) Variable Function
+ 182(param): 9(ptr) Variable Function
+ 187(param): 7(ptr) Variable Function
+ 188(param): 7(ptr) Variable Function
+ 193(param): 7(ptr) Variable Function
+ 194(param): 16(ptr) Variable Function
+ 199(param): 7(ptr) Variable Function
+ 200(param): 23(ptr) Variable Function
+ 205(param): 7(ptr) Variable Function
+ 206(param): 30(ptr) Variable Function
+ 211(param): 7(ptr) Variable Function
+ 212(param): 9(ptr) Variable Function
+ 217(param): 7(ptr) Variable Function
+ 218(param): 7(ptr) Variable Function
+ 223(param): 7(ptr) Variable Function
+ 224(param): 16(ptr) Variable Function
+ 229(param): 7(ptr) Variable Function
+ 230(param): 23(ptr) Variable Function
+ 235(param): 7(ptr) Variable Function
+ 236(param): 30(ptr) Variable Function
+ 241(param): 7(ptr) Variable Function
+ 242(param): 9(ptr) Variable Function
+ 247(param): 7(ptr) Variable Function
+ 248(param): 7(ptr) Variable Function
+ 253(param): 7(ptr) Variable Function
+ 254(param): 16(ptr) Variable Function
+ 259(param): 7(ptr) Variable Function
+ 260(param): 23(ptr) Variable Function
+ 265(param): 7(ptr) Variable Function
+ 266(param): 30(ptr) Variable Function
+ 271(param): 23(ptr) Variable Function
+ 272(param): 9(ptr) Variable Function
+ 277(param): 23(ptr) Variable Function
+ 278(param): 7(ptr) Variable Function
+ 283(param): 23(ptr) Variable Function
+ 284(param): 16(ptr) Variable Function
+ 289(param): 23(ptr) Variable Function
+ 290(param): 23(ptr) Variable Function
+ 295(param): 23(ptr) Variable Function
+ 296(param): 30(ptr) Variable Function
+ 299(param): 23(ptr) Variable Function
+ 301(param): 9(ptr) Variable Function
+ 304(param): 23(ptr) Variable Function
+ 306(param): 7(ptr) Variable Function
+ 309(param): 23(ptr) Variable Function
+ 311(param): 16(ptr) Variable Function
+ 314(param): 23(ptr) Variable Function
+ 316(param): 23(ptr) Variable Function
+ 319(param): 23(ptr) Variable Function
+ 321(param): 30(ptr) Variable Function
+ 324(param): 9(ptr) Variable Function
+ 330(param): 9(ptr) Variable Function
+ 335(param): 9(ptr) Variable Function
+ 339(param): 9(ptr) Variable Function
+ 344(param): 9(ptr) Variable Function
+ 349(param): 16(ptr) Variable Function
+ 353(param): 16(ptr) Variable Function
+ 355(param): 16(ptr) Variable Function
+ 360(param): 16(ptr) Variable Function
+ 364(param): 16(ptr) Variable Function
+ 370(param): 23(ptr) Variable Function
+ 374(param): 23(ptr) Variable Function
+ 378(param): 23(ptr) Variable Function
+ 380(param): 23(ptr) Variable Function
+ 385(param): 23(ptr) Variable Function
+ 390(param): 30(ptr) Variable Function
+ 394(param): 30(ptr) Variable Function
+ 398(param): 30(ptr) Variable Function
+ 402(param): 30(ptr) Variable Function
+ 404(param): 30(ptr) Variable Function
+ 410(param): 7(ptr) Variable Function
+ 412(param): 7(ptr) Variable Function
+ 417(param): 7(ptr) Variable Function
+ 421(param): 7(ptr) Variable Function
+ 425(param): 7(ptr) Variable Function
+ 429(param): 30(ptr) Variable Function
+ 433(param): 30(ptr) Variable Function
+ 437(param): 30(ptr) Variable Function
+ 441(param): 23(ptr) Variable Function
+ 445(param): 16(ptr) Variable Function
+ 449(param): 16(ptr) Variable Function
+ 453(param): 23(ptr) Variable Function
+ 457(param): 23(ptr) Variable Function
+ 461(param): 23(ptr) Variable Function
+ 465(param): 16(ptr) Variable Function
+ 469(param): 7(ptr) Variable Function
+ 474(param): 126(ptr) Variable Function
+ 481(param): 135(ptr) Variable Function
+ 485(param): 105(ptr) Variable Function
+ 491(param): 23(ptr) Variable Function
+ 494(param): 9(ptr) Variable Function
+ 500(param): 9(ptr) Variable Function
+ 152: 6(float) Load 149(d)
+ Store 151(param) 152
+ 154: 8(bool) Load 150(b)
+ Store 153(param) 154
+ 155: 2 FunctionCall 13(foo1(d1;b1;) 151(param) 153(param)
+ 157: 6(float) Load 149(d)
+ Store 156(param) 157
+ 159: 6(float) Load 149(d)
+ Store 158(param) 159
+ 160: 2 FunctionCall 39(foo1(d1;d1;) 156(param) 158(param)
+ 163: 6(float) Load 149(d)
+ Store 162(param) 163
+ 165: 15(int) Load 161(u)
+ Store 164(param) 165
+ 166: 2 FunctionCall 20(foo1(d1;u1;) 162(param) 164(param)
+ 169: 6(float) Load 149(d)
+ Store 168(param) 169
+ 171: 22(int) Load 167(i)
+ Store 170(param) 171
+ 172: 2 FunctionCall 27(foo1(d1;i1;) 168(param) 170(param)
+ 175: 6(float) Load 149(d)
+ Store 174(param) 175
+ 177: 29(float) Load 173(f)
+ Store 176(param) 177
+ 178: 2 FunctionCall 34(foo1(d1;f1;) 174(param) 176(param)
+ 179: 29(float) Load 173(f)
+ 180: 6(float) FConvert 179
+ Store 181(param) 180
+ 183: 8(bool) Load 150(b)
+ Store 182(param) 183
+ 184: 2 FunctionCall 13(foo1(d1;b1;) 181(param) 182(param)
+ 185: 29(float) Load 173(f)
+ 186: 6(float) FConvert 185
+ Store 187(param) 186
+ 189: 6(float) Load 149(d)
+ Store 188(param) 189
+ 190: 2 FunctionCall 39(foo1(d1;d1;) 187(param) 188(param)
+ 191: 29(float) Load 173(f)
+ 192: 6(float) FConvert 191
+ Store 193(param) 192
+ 195: 15(int) Load 161(u)
+ Store 194(param) 195
+ 196: 2 FunctionCall 20(foo1(d1;u1;) 193(param) 194(param)
+ 197: 29(float) Load 173(f)
+ 198: 6(float) FConvert 197
+ Store 199(param) 198
+ 201: 22(int) Load 167(i)
+ Store 200(param) 201
+ 202: 2 FunctionCall 27(foo1(d1;i1;) 199(param) 200(param)
+ 203: 29(float) Load 173(f)
+ 204: 6(float) FConvert 203
+ Store 205(param) 204
+ 207: 29(float) Load 173(f)
+ Store 206(param) 207
+ 208: 2 FunctionCall 34(foo1(d1;f1;) 205(param) 206(param)
+ 209: 15(int) Load 161(u)
+ 210: 6(float) ConvertUToF 209
+ Store 211(param) 210
+ 213: 8(bool) Load 150(b)
+ Store 212(param) 213
+ 214: 2 FunctionCall 13(foo1(d1;b1;) 211(param) 212(param)
+ 215: 15(int) Load 161(u)
+ 216: 6(float) ConvertUToF 215
+ Store 217(param) 216
+ 219: 6(float) Load 149(d)
+ Store 218(param) 219
+ 220: 2 FunctionCall 39(foo1(d1;d1;) 217(param) 218(param)
+ 221: 15(int) Load 161(u)
+ 222: 6(float) ConvertUToF 221
+ Store 223(param) 222
+ 225: 15(int) Load 161(u)
+ Store 224(param) 225
+ 226: 2 FunctionCall 20(foo1(d1;u1;) 223(param) 224(param)
+ 227: 15(int) Load 161(u)
+ 228: 6(float) ConvertUToF 227
+ Store 229(param) 228
+ 231: 22(int) Load 167(i)
+ Store 230(param) 231
+ 232: 2 FunctionCall 27(foo1(d1;i1;) 229(param) 230(param)
+ 233: 15(int) Load 161(u)
+ 234: 6(float) ConvertUToF 233
+ Store 235(param) 234
+ 237: 29(float) Load 173(f)
+ Store 236(param) 237
+ 238: 2 FunctionCall 34(foo1(d1;f1;) 235(param) 236(param)
+ 239: 22(int) Load 167(i)
+ 240: 6(float) ConvertSToF 239
+ Store 241(param) 240
+ 243: 8(bool) Load 150(b)
+ Store 242(param) 243
+ 244: 2 FunctionCall 13(foo1(d1;b1;) 241(param) 242(param)
+ 245: 22(int) Load 167(i)
+ 246: 6(float) ConvertSToF 245
+ Store 247(param) 246
+ 249: 6(float) Load 149(d)
+ Store 248(param) 249
+ 250: 2 FunctionCall 39(foo1(d1;d1;) 247(param) 248(param)
+ 251: 22(int) Load 167(i)
+ 252: 6(float) ConvertSToF 251
+ Store 253(param) 252
+ 255: 15(int) Load 161(u)
+ Store 254(param) 255
+ 256: 2 FunctionCall 20(foo1(d1;u1;) 253(param) 254(param)
+ 257: 22(int) Load 167(i)
+ 258: 6(float) ConvertSToF 257
+ Store 259(param) 258
+ 261: 22(int) Load 167(i)
+ Store 260(param) 261
+ 262: 2 FunctionCall 27(foo1(d1;i1;) 259(param) 260(param)
+ 263: 22(int) Load 167(i)
+ 264: 6(float) ConvertSToF 263
+ Store 265(param) 264
+ 267: 29(float) Load 173(f)
+ Store 266(param) 267
+ 268: 2 FunctionCall 34(foo1(d1;f1;) 265(param) 266(param)
+ 269: 15(int) Load 161(u)
+ 270: 22(int) Bitcast 269
+ Store 271(param) 270
+ 273: 8(bool) Load 150(b)
+ Store 272(param) 273
+ 274: 2 FunctionCall 44(foo2(i1;b1;) 271(param) 272(param)
+ 275: 15(int) Load 161(u)
+ 276: 22(int) Bitcast 275
+ Store 277(param) 276
+ 279: 6(float) Load 149(d)
+ Store 278(param) 279
+ 280: 2 FunctionCall 64(foo2(i1;d1;) 277(param) 278(param)
+ 281: 15(int) Load 161(u)
+ 282: 22(int) Bitcast 281
+ Store 283(param) 282
+ 285: 15(int) Load 161(u)
+ Store 284(param) 285
+ 286: 2 FunctionCall 49(foo2(i1;u1;) 283(param) 284(param)
+ 287: 15(int) Load 161(u)
+ 288: 22(int) Bitcast 287
+ Store 289(param) 288
+ 291: 22(int) Load 167(i)
+ Store 290(param) 291
+ 292: 2 FunctionCall 54(foo2(i1;i1;) 289(param) 290(param)
+ 293: 15(int) Load 161(u)
+ 294: 22(int) Bitcast 293
+ Store 295(param) 294
+ 297: 29(float) Load 173(f)
+ Store 296(param) 297
+ 298: 2 FunctionCall 59(foo2(i1;f1;) 295(param) 296(param)
+ 300: 22(int) Load 167(i)
+ Store 299(param) 300
+ 302: 8(bool) Load 150(b)
+ Store 301(param) 302
+ 303: 2 FunctionCall 44(foo2(i1;b1;) 299(param) 301(param)
+ 305: 22(int) Load 167(i)
+ Store 304(param) 305
+ 307: 6(float) Load 149(d)
+ Store 306(param) 307
+ 308: 2 FunctionCall 64(foo2(i1;d1;) 304(param) 306(param)
+ 310: 22(int) Load 167(i)
+ Store 309(param) 310
+ 312: 15(int) Load 161(u)
+ Store 311(param) 312
+ 313: 2 FunctionCall 49(foo2(i1;u1;) 309(param) 311(param)
+ 315: 22(int) Load 167(i)
+ Store 314(param) 315
+ 317: 22(int) Load 167(i)
+ Store 316(param) 317
+ 318: 2 FunctionCall 54(foo2(i1;i1;) 314(param) 316(param)
+ 320: 22(int) Load 167(i)
+ Store 319(param) 320
+ 322: 29(float) Load 173(f)
+ Store 321(param) 322
+ 323: 2 FunctionCall 59(foo2(i1;f1;) 319(param) 321(param)
+ 325: 8(bool) Load 150(b)
+ Store 324(param) 325
+ 326: 2 FunctionCall 68(foo3(b1;) 324(param)
+ 327: 6(float) Load 149(d)
+ 329: 8(bool) FOrdNotEqual 327 328
+ Store 330(param) 329
+ 331: 2 FunctionCall 68(foo3(b1;) 330(param)
+ 332: 15(int) Load 161(u)
+ 334: 8(bool) INotEqual 332 333
+ Store 335(param) 334
+ 336: 2 FunctionCall 68(foo3(b1;) 335(param)
+ 337: 22(int) Load 167(i)
+ 338: 8(bool) INotEqual 337 333
+ Store 339(param) 338
+ 340: 2 FunctionCall 68(foo3(b1;) 339(param)
+ 341: 29(float) Load 173(f)
+ 343: 8(bool) FOrdNotEqual 341 342
+ Store 344(param) 343
+ 345: 2 FunctionCall 68(foo3(b1;) 344(param)
+ 346: 8(bool) Load 150(b)
+ 348: 15(int) Select 346 347 333
+ Store 349(param) 348
+ 350: 2 FunctionCall 72(foo4(u1;) 349(param)
+ 351: 6(float) Load 149(d)
+ 352: 15(int) ConvertFToU 351
+ Store 353(param) 352
+ 354: 2 FunctionCall 72(foo4(u1;) 353(param)
+ 356: 15(int) Load 161(u)
+ Store 355(param) 356
+ 357: 2 FunctionCall 72(foo4(u1;) 355(param)
+ 358: 22(int) Load 167(i)
+ 359: 15(int) Bitcast 358
+ Store 360(param) 359
+ 361: 2 FunctionCall 72(foo4(u1;) 360(param)
+ 362: 29(float) Load 173(f)
+ 363: 15(int) ConvertFToU 362
+ Store 364(param) 363
+ 365: 2 FunctionCall 72(foo4(u1;) 364(param)
+ 366: 8(bool) Load 150(b)
+ 369: 22(int) Select 366 368 367
+ Store 370(param) 369
+ 371: 2 FunctionCall 76(foo5(i1;) 370(param)
+ 372: 6(float) Load 149(d)
+ 373: 22(int) ConvertFToS 372
+ Store 374(param) 373
+ 375: 2 FunctionCall 76(foo5(i1;) 374(param)
+ 376: 15(int) Load 161(u)
+ 377: 22(int) Bitcast 376
+ Store 378(param) 377
+ 379: 2 FunctionCall 76(foo5(i1;) 378(param)
+ 381: 22(int) Load 167(i)
+ Store 380(param) 381
+ 382: 2 FunctionCall 76(foo5(i1;) 380(param)
+ 383: 29(float) Load 173(f)
+ 384: 22(int) ConvertFToS 383
+ Store 385(param) 384
+ 386: 2 FunctionCall 76(foo5(i1;) 385(param)
+ 387: 8(bool) Load 150(b)
+ 389: 29(float) Select 387 388 342
+ Store 390(param) 389
+ 391: 2 FunctionCall 80(foo6(f1;) 390(param)
+ 392: 6(float) Load 149(d)
+ 393: 29(float) FConvert 392
+ Store 394(param) 393
+ 395: 2 FunctionCall 80(foo6(f1;) 394(param)
+ 396: 15(int) Load 161(u)
+ 397: 29(float) ConvertUToF 396
+ Store 398(param) 397
+ 399: 2 FunctionCall 80(foo6(f1;) 398(param)
+ 400: 22(int) Load 167(i)
+ 401: 29(float) ConvertSToF 400
+ Store 402(param) 401
+ 403: 2 FunctionCall 80(foo6(f1;) 402(param)
+ 405: 29(float) Load 173(f)
+ Store 404(param) 405
+ 406: 2 FunctionCall 80(foo6(f1;) 404(param)
+ 407: 8(bool) Load 150(b)
+ 409: 6(float) Select 407 408 328
+ Store 410(param) 409
+ 411: 2 FunctionCall 84(foo7(d1;) 410(param)
+ 413: 6(float) Load 149(d)
+ Store 412(param) 413
+ 414: 2 FunctionCall 84(foo7(d1;) 412(param)
+ 415: 15(int) Load 161(u)
+ 416: 6(float) ConvertUToF 415
+ Store 417(param) 416
+ 418: 2 FunctionCall 84(foo7(d1;) 417(param)
+ 419: 22(int) Load 167(i)
+ 420: 6(float) ConvertSToF 419
+ Store 421(param) 420
+ 422: 2 FunctionCall 84(foo7(d1;) 421(param)
+ 423: 29(float) Load 173(f)
+ 424: 6(float) FConvert 423
+ Store 425(param) 424
+ 426: 2 FunctionCall 84(foo7(d1;) 425(param)
+ 427: 8(bool) Load 150(b)
+ 428: 29(float) Select 427 388 342
+ Store 429(param) 428
+ 430: 2 FunctionCall 87(foo8(f1;) 429(param)
+ 431: 15(int) Load 161(u)
+ 432: 29(float) ConvertUToF 431
+ Store 433(param) 432
+ 434: 2 FunctionCall 87(foo8(f1;) 433(param)
+ 435: 22(int) Load 167(i)
+ 436: 29(float) ConvertSToF 435
+ Store 437(param) 436
+ 438: 2 FunctionCall 87(foo8(f1;) 437(param)
+ 439: 8(bool) Load 150(b)
+ 440: 22(int) Select 439 368 367
+ Store 441(param) 440
+ 442: 2 FunctionCall 93(foo9(i1;) 441(param)
+ 443: 29(float) Load 173(f)
+ 444: 15(int) ConvertFToU 443
+ Store 445(param) 444
+ 446: 2 FunctionCall 96(foo9(u1;) 445(param)
+ 447: 6(float) Load 149(d)
+ 448: 15(int) ConvertFToU 447
+ Store 449(param) 448
+ 450: 2 FunctionCall 96(foo9(u1;) 449(param)
+ 451: 15(int) Load 161(u)
+ 452: 22(int) Bitcast 451
+ Store 453(param) 452
+ 454: 2 FunctionCall 102(foo10(i1;) 453(param)
+ 455: 29(float) Load 173(f)
+ 456: 22(int) ConvertFToS 455
+ Store 457(param) 456
+ 458: 2 FunctionCall 102(foo10(i1;) 457(param)
+ 459: 6(float) Load 149(d)
+ 460: 22(int) ConvertFToS 459
+ Store 461(param) 460
+ 462: 2 FunctionCall 102(foo10(i1;) 461(param)
+ 463: 8(bool) Load 150(b)
+ 464: 15(int) Select 463 347 333
+ Store 465(param) 464
+ 466: 2 FunctionCall 120(foo11(u1;) 465(param)
+ 467: 29(float) Load 173(f)
+ 468: 6(float) FConvert 467
+ Store 469(param) 468
+ 470: 2 FunctionCall 111(foo11(d1;) 469(param)
+ 471: 29(float) Load 173(f)
+ 472: 104(fvec3) CompositeConstruct 471 471 471
+ 473: 125(fvec3) FConvert 472
+ Store 474(param) 473
+ 475: 2 FunctionCall 129(foo12(vd3;) 474(param)
+ 476: 22(int) Load 167(i)
+ 477: 22(int) Load 167(i)
+ 479: 478(ivec2) CompositeConstruct 476 477
+ 480: 134(ivec2) Bitcast 479
+ Store 481(param) 480
+ 482: 2 FunctionCall 138(foo16(vu2;) 481(param)
+ 483: 29(float) Load 173(f)
+ 484: 104(fvec3) CompositeConstruct 483 483 483
+ Store 485(param) 484
+ 486: 2 FunctionCall 141(foo13(vf3;) 485(param)
+ 487: 22(int) Load 167(i)
+ 489: 488(ivec4) CompositeConstruct 487 487 487 487
+ 490: 22(int) CompositeExtract 489 0
+ Store 491(param) 490
+ 492: 2 FunctionCall 144(foo14(vi1;) 491(param)
+ 493: 8(bool) Load 150(b)
+ Store 494(param) 493
+ 495: 2 FunctionCall 147(foo15(vb1;) 494(param)
+ 496: 8(bool) Load 150(b)
+ 498: 497(bvec3) CompositeConstruct 496 496 496
+ 499: 8(bool) CompositeExtract 498 0
+ Store 500(param) 499
+ 501: 2 FunctionCall 147(foo15(vb1;) 500(param)
+ 507: 502(fvec4) Load 506(input)
+ Store 504(@entryPointOutput) 507
+ Return
+ FunctionEnd
+ 13(foo1(d1;b1;): 2 Function None 10
+ 11(a): 7(ptr) FunctionParameter
+ 12(b): 9(ptr) FunctionParameter
+ 14: Label
+ Return
+ FunctionEnd
+ 20(foo1(d1;u1;): 2 Function None 17
+ 18(a): 7(ptr) FunctionParameter
+ 19(b): 16(ptr) FunctionParameter
+ 21: Label
+ Return
+ FunctionEnd
+ 27(foo1(d1;i1;): 2 Function None 24
+ 25(a): 7(ptr) FunctionParameter
+ 26(b): 23(ptr) FunctionParameter
+ 28: Label
+ Return
+ FunctionEnd
+ 34(foo1(d1;f1;): 2 Function None 31
+ 32(a): 7(ptr) FunctionParameter
+ 33(b): 30(ptr) FunctionParameter
+ 35: Label
+ Return
+ FunctionEnd
+ 39(foo1(d1;d1;): 2 Function None 36
+ 37(a): 7(ptr) FunctionParameter
+ 38(b): 7(ptr) FunctionParameter
+ 40: Label
+ Return
+ FunctionEnd
+ 44(foo2(i1;b1;): 2 Function None 41
+ 42(a): 23(ptr) FunctionParameter
+ 43(b): 9(ptr) FunctionParameter
+ 45: Label
+ Return
+ FunctionEnd
+ 49(foo2(i1;u1;): 2 Function None 46
+ 47(a): 23(ptr) FunctionParameter
+ 48(b): 16(ptr) FunctionParameter
+ 50: Label
+ Return
+ FunctionEnd
+ 54(foo2(i1;i1;): 2 Function None 51
+ 52(a): 23(ptr) FunctionParameter
+ 53(b): 23(ptr) FunctionParameter
+ 55: Label
+ Return
+ FunctionEnd
+ 59(foo2(i1;f1;): 2 Function None 56
+ 57(a): 23(ptr) FunctionParameter
+ 58(b): 30(ptr) FunctionParameter
+ 60: Label
+ Return
+ FunctionEnd
+ 64(foo2(i1;d1;): 2 Function None 61
+ 62(a): 23(ptr) FunctionParameter
+ 63(b): 7(ptr) FunctionParameter
+ 65: Label
+ Return
+ FunctionEnd
+ 68(foo3(b1;): 2 Function None 66
+ 67(b): 9(ptr) FunctionParameter
+ 69: Label
+ Return
+ FunctionEnd
+ 72(foo4(u1;): 2 Function None 70
+ 71(b): 16(ptr) FunctionParameter
+ 73: Label
+ Return
+ FunctionEnd
+ 76(foo5(i1;): 2 Function None 74
+ 75(b): 23(ptr) FunctionParameter
+ 77: Label
+ Return
+ FunctionEnd
+ 80(foo6(f1;): 2 Function None 78
+ 79(b): 30(ptr) FunctionParameter
+ 81: Label
+ Return
+ FunctionEnd
+ 84(foo7(d1;): 2 Function None 82
+ 83(b): 7(ptr) FunctionParameter
+ 85: Label
+ Return
+ FunctionEnd
+ 87(foo8(f1;): 2 Function None 78
+ 86: 30(ptr) FunctionParameter
+ 88: Label
+ Return
+ FunctionEnd
+ 90(foo8(d1;): 2 Function None 82
+ 89: 7(ptr) FunctionParameter
+ 91: Label
+ Return
+ FunctionEnd
+ 93(foo9(i1;): 2 Function None 74
+ 92: 23(ptr) FunctionParameter
+ 94: Label
+ Return
+ FunctionEnd
+ 96(foo9(u1;): 2 Function None 70
+ 95: 16(ptr) FunctionParameter
+ 97: Label
+ Return
+ FunctionEnd
+ 99(foo10(b1;): 2 Function None 66
+ 98: 9(ptr) FunctionParameter
+ 100: Label
+ Return
+ FunctionEnd
+ 102(foo10(i1;): 2 Function None 74
+ 101: 23(ptr) FunctionParameter
+ 103: Label
+ Return
+ FunctionEnd
+ 108(foo11(vf3;): 2 Function None 106
+ 107: 105(ptr) FunctionParameter
+ 109: Label
+ Return
+ FunctionEnd
+ 111(foo11(d1;): 2 Function None 82
+ 110: 7(ptr) FunctionParameter
+ 112: Label
+ Return
+ FunctionEnd
+ 117(foo11(vi3;): 2 Function None 115
+ 116: 114(ptr) FunctionParameter
+ 118: Label
+ Return
+ FunctionEnd
+ 120(foo11(u1;): 2 Function None 70
+ 119: 16(ptr) FunctionParameter
+ 121: Label
+ Return
+ FunctionEnd
+ 123(foo12(vf1;): 2 Function None 78
+ 122: 30(ptr) FunctionParameter
+ 124: Label
+ Return
+ FunctionEnd
+ 129(foo12(vd3;): 2 Function None 127
+ 128: 126(ptr) FunctionParameter
+ 130: Label
+ Return
+ FunctionEnd
+ 132(foo16(u1;): 2 Function None 70
+ 131: 16(ptr) FunctionParameter
+ 133: Label
+ Return
+ FunctionEnd
+ 138(foo16(vu2;): 2 Function None 136
+ 137: 135(ptr) FunctionParameter
+ 139: Label
+ Return
+ FunctionEnd
+ 141(foo13(vf3;): 2 Function None 106
+ 140: 105(ptr) FunctionParameter
+ 142: Label
+ Return
+ FunctionEnd
+ 144(foo14(vi1;): 2 Function None 74
+ 143: 23(ptr) FunctionParameter
+ 145: Label
+ Return
+ FunctionEnd
+ 147(foo15(vb1;): 2 Function None 66
+ 146: 9(ptr) FunctionParameter
+ 148: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out
index 6484eb0..95a2f25 100644
--- a/Test/baseResults/hlsl.pp.line.frag.out
+++ b/Test/baseResults/hlsl.pp.line.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:131 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:4 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:4 Function Parameters:
0:? Sequence
0:124 Sequence
@@ -12,7 +12,7 @@
0:124 124 (const int)
0:126 move second child to first child (temp 4-component vector of float)
0:126 Color: direct index for structure (temp 4-component vector of float)
-0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:126 Constant:
0:126 0 (const int)
0:? Construct vec4 (temp 4-component vector of float)
@@ -25,15 +25,30 @@
0:126 Constant:
0:126 1.000000
0:127 move second child to first child (temp float)
-0:127 Depth: direct index for structure (temp float FragDepth)
-0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:127 Depth: direct index for structure (temp float)
+0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:127 Constant:
0:127 1 (const int)
0:127 Constant:
0:127 1.000000
-0:129 Branch: Return with expression
-0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:129 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:129 Color: direct index for structure (temp 4-component vector of float)
+0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:129 Constant:
+0:129 0 (const int)
+0:129 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:129 Depth: direct index for structure (temp float)
+0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:129 Constant:
+0:129 1 (const int)
+0:129 Branch: Return
0:? Linker Objects
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -42,7 +57,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:131 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:4 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:4 Function Parameters:
0:? Sequence
0:124 Sequence
@@ -52,7 +67,7 @@
0:124 124 (const int)
0:126 move second child to first child (temp 4-component vector of float)
0:126 Color: direct index for structure (temp 4-component vector of float)
-0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:126 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:126 Constant:
0:126 0 (const int)
0:? Construct vec4 (temp 4-component vector of float)
@@ -65,33 +80,50 @@
0:126 Constant:
0:126 1.000000
0:127 move second child to first child (temp float)
-0:127 Depth: direct index for structure (temp float FragDepth)
-0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:127 Depth: direct index for structure (temp float)
+0:127 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:127 Constant:
0:127 1 (const int)
0:127 Constant:
0:127 1.000000
-0:129 Branch: Return with expression
-0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:129 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:129 Color: direct index for structure (temp 4-component vector of float)
+0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:129 Constant:
+0:129 0 (const int)
+0:129 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:129 Depth: direct index for structure (temp float)
+0:129 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:129 Constant:
+0:129 1 (const int)
+0:129 Branch: Return
0:? Linker Objects
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 28
+// Id's are bound by 35
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 27 31
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "thisLineIs"
Name 12 "PS_OUTPUT"
MemberName 12(PS_OUTPUT) 0 "Color"
MemberName 12(PS_OUTPUT) 1 "Depth"
Name 14 "psout"
- MemberDecorate 12(PS_OUTPUT) 1 BuiltIn FragDepth
+ Name 27 "Color"
+ Name 31 "Depth"
+ Decorate 27(Color) Location 0
+ Decorate 31(Depth) BuiltIn FragDepth
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -107,6 +139,10 @@
21: TypePointer Function 11(fvec4)
23: 6(int) Constant 1
24: TypePointer Function 10(float)
+ 26: TypePointer Output 11(fvec4)
+ 27(Color): 26(ptr) Variable Output
+ 30: TypePointer Output 10(float)
+ 31(Depth): 30(ptr) Variable Output
4(main): 2 Function None 3
5: Label
8(thisLineIs): 7(ptr) Variable Function
@@ -119,6 +155,11 @@
Store 22 20
25: 24(ptr) AccessChain 14(psout) 23
Store 25 19
- 26:12(PS_OUTPUT) Load 14(psout)
- ReturnValue 26
+ 28: 21(ptr) AccessChain 14(psout) 15
+ 29: 11(fvec4) Load 28
+ Store 27(Color) 29
+ 32: 24(ptr) AccessChain 14(psout) 23
+ 33: 10(float) Load 32
+ Store 31(Depth) 33
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out
index 2ad5ab5..e633847 100755
--- a/Test/baseResults/hlsl.precedence.frag.out
+++ b/Test/baseResults/hlsl.precedence.frag.out
@@ -2,47 +2,55 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:7 Function Parameters:
-0:7 'a1' (in 4-component vector of float)
-0:7 'a2' (in 4-component vector of float)
-0:7 'a3' (in 4-component vector of float)
-0:7 'a4' (in 4-component vector of float)
+0:7 'a1' (layout(location=0 ) in 4-component vector of float)
+0:7 'a2' (layout(location=1 ) in 4-component vector of float)
+0:7 'a3' (layout(location=2 ) in 4-component vector of float)
+0:7 'a4' (layout(location=3 ) in 4-component vector of float)
0:? Sequence
-0:8 Branch: Return with expression
-0:8 add (temp 4-component vector of float)
+0:8 Sequence
+0:8 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float)
-0:8 'a1' (in 4-component vector of float)
-0:8 component-wise multiply (temp 4-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 'a3' (in 4-component vector of float)
-0:8 'a4' (in 4-component vector of float)
-0:? Construct vec4 (temp 4-component vector of float)
-0:8 component-wise multiply (temp 3-component vector of float)
-0:8 vector swizzle (temp 3-component vector of float)
-0:8 'a1' (in 4-component vector of float)
-0:8 Sequence
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 1 (const int)
-0:8 Constant:
-0:8 2 (const int)
-0:8 vector swizzle (temp 3-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 Sequence
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 1 (const int)
-0:8 Constant:
-0:8 2 (const int)
-0:8 direct index (temp float)
-0:8 'a3' (in 4-component vector of float)
-0:8 Constant:
-0:8 3 (const int)
+0:8 add (temp 4-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 component-wise multiply (temp 4-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 'a4' (layout(location=3 ) in 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:8 component-wise multiply (temp 3-component vector of float)
+0:8 vector swizzle (temp 3-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 vector swizzle (temp 3-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index (temp float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 Constant:
+0:8 3 (const int)
+0:8 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'a1' (layout(location=0 ) in 4-component vector of float)
+0:? 'a2' (layout(location=1 ) in 4-component vector of float)
+0:? 'a3' (layout(location=2 ) in 4-component vector of float)
+0:? 'a4' (layout(location=3 ) in 4-component vector of float)
Linked fragment stage:
@@ -51,96 +59,112 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:10 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
+0:7 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vf4; (global 4-component vector of float)
0:7 Function Parameters:
-0:7 'a1' (in 4-component vector of float)
-0:7 'a2' (in 4-component vector of float)
-0:7 'a3' (in 4-component vector of float)
-0:7 'a4' (in 4-component vector of float)
+0:7 'a1' (layout(location=0 ) in 4-component vector of float)
+0:7 'a2' (layout(location=1 ) in 4-component vector of float)
+0:7 'a3' (layout(location=2 ) in 4-component vector of float)
+0:7 'a4' (layout(location=3 ) in 4-component vector of float)
0:? Sequence
-0:8 Branch: Return with expression
-0:8 add (temp 4-component vector of float)
+0:8 Sequence
+0:8 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:8 add (temp 4-component vector of float)
0:8 add (temp 4-component vector of float)
-0:8 'a1' (in 4-component vector of float)
-0:8 component-wise multiply (temp 4-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 'a3' (in 4-component vector of float)
-0:8 'a4' (in 4-component vector of float)
-0:? Construct vec4 (temp 4-component vector of float)
-0:8 component-wise multiply (temp 3-component vector of float)
-0:8 vector swizzle (temp 3-component vector of float)
-0:8 'a1' (in 4-component vector of float)
-0:8 Sequence
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 1 (const int)
-0:8 Constant:
-0:8 2 (const int)
-0:8 vector swizzle (temp 3-component vector of float)
-0:8 'a2' (in 4-component vector of float)
-0:8 Sequence
-0:8 Constant:
-0:8 0 (const int)
-0:8 Constant:
-0:8 1 (const int)
-0:8 Constant:
-0:8 2 (const int)
-0:8 direct index (temp float)
-0:8 'a3' (in 4-component vector of float)
-0:8 Constant:
-0:8 3 (const int)
+0:8 add (temp 4-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 component-wise multiply (temp 4-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 'a4' (layout(location=3 ) in 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:8 component-wise multiply (temp 3-component vector of float)
+0:8 vector swizzle (temp 3-component vector of float)
+0:8 'a1' (layout(location=0 ) in 4-component vector of float)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 vector swizzle (temp 3-component vector of float)
+0:8 'a2' (layout(location=1 ) in 4-component vector of float)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 direct index (temp float)
+0:8 'a3' (layout(location=2 ) in 4-component vector of float)
+0:8 Constant:
+0:8 3 (const int)
+0:8 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'a1' (layout(location=0 ) in 4-component vector of float)
+0:? 'a2' (layout(location=1 ) in 4-component vector of float)
+0:? 'a3' (layout(location=2 ) in 4-component vector of float)
+0:? 'a4' (layout(location=3 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 37
+// Id's are bound by 39
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9 11 13 17
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11 13 15 19
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 9 "a1"
- Name 11 "a2"
- Name 13 "a3"
- Name 17 "a4"
+ Name 9 "@entryPointOutput"
+ Name 11 "a1"
+ Name 13 "a2"
+ Name 15 "a3"
+ Name 19 "a4"
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 11(a1) Location 0
+ Decorate 13(a2) Location 1
+ Decorate 15(a3) Location 2
+ Decorate 19(a4) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Input 7(fvec4)
- 9(a1): 8(ptr) Variable Input
- 11(a2): 8(ptr) Variable Input
- 13(a3): 8(ptr) Variable Input
- 17(a4): 8(ptr) Variable Input
- 20: TypeVector 6(float) 3
- 26: TypeInt 32 0
- 27: 26(int) Constant 3
- 28: TypePointer Input 6(float)
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(a1): 10(ptr) Variable Input
+ 13(a2): 10(ptr) Variable Input
+ 15(a3): 10(ptr) Variable Input
+ 19(a4): 10(ptr) Variable Input
+ 22: TypeVector 6(float) 3
+ 28: TypeInt 32 0
+ 29: 28(int) Constant 3
+ 30: TypePointer Input 6(float)
4(PixelShaderFunction): 2 Function None 3
5: Label
- 10: 7(fvec4) Load 9(a1)
- 12: 7(fvec4) Load 11(a2)
- 14: 7(fvec4) Load 13(a3)
- 15: 7(fvec4) FMul 12 14
- 16: 7(fvec4) FAdd 10 15
- 18: 7(fvec4) Load 17(a4)
- 19: 7(fvec4) FAdd 16 18
- 21: 7(fvec4) Load 9(a1)
- 22: 20(fvec3) VectorShuffle 21 21 0 1 2
- 23: 7(fvec4) Load 11(a2)
- 24: 20(fvec3) VectorShuffle 23 23 0 1 2
- 25: 20(fvec3) FMul 22 24
- 29: 28(ptr) AccessChain 13(a3) 27
- 30: 6(float) Load 29
- 31: 6(float) CompositeExtract 25 0
- 32: 6(float) CompositeExtract 25 1
- 33: 6(float) CompositeExtract 25 2
- 34: 7(fvec4) CompositeConstruct 31 32 33 30
- 35: 7(fvec4) FAdd 19 34
- ReturnValue 35
+ 12: 7(fvec4) Load 11(a1)
+ 14: 7(fvec4) Load 13(a2)
+ 16: 7(fvec4) Load 15(a3)
+ 17: 7(fvec4) FMul 14 16
+ 18: 7(fvec4) FAdd 12 17
+ 20: 7(fvec4) Load 19(a4)
+ 21: 7(fvec4) FAdd 18 20
+ 23: 7(fvec4) Load 11(a1)
+ 24: 22(fvec3) VectorShuffle 23 23 0 1 2
+ 25: 7(fvec4) Load 13(a2)
+ 26: 22(fvec3) VectorShuffle 25 25 0 1 2
+ 27: 22(fvec3) FMul 24 26
+ 31: 30(ptr) AccessChain 15(a3) 29
+ 32: 6(float) Load 31
+ 33: 6(float) CompositeExtract 27 0
+ 34: 6(float) CompositeExtract 27 1
+ 35: 6(float) CompositeExtract 27 2
+ 36: 7(fvec4) CompositeConstruct 33 34 35 32
+ 37: 7(fvec4) FAdd 21 36
+ Store 9(@entryPointOutput) 37
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out
index bfe2643..7021837 100755
--- a/Test/baseResults/hlsl.precedence2.frag.out
+++ b/Test/baseResults/hlsl.precedence2.frag.out
@@ -2,30 +2,38 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
+0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
0:7 Function Parameters:
-0:7 'a1' (in int)
-0:7 'a2' (in int)
-0:7 'a3' (in int)
-0:7 'a4' (in int)
+0:7 'a1' (layout(location=0 ) in int)
+0:7 'a2' (layout(location=1 ) in int)
+0:7 'a3' (layout(location=2 ) in int)
+0:7 'a4' (layout(location=3 ) in int)
0:? Sequence
-0:8 Branch: Return with expression
-0:8 add (temp int)
-0:8 left-shift (temp int)
-0:8 add (temp int)
-0:8 component-wise multiply (temp int)
-0:8 'a1' (in int)
-0:8 'a2' (in int)
-0:8 'a3' (in int)
-0:8 'a4' (in int)
-0:8 left-shift (temp int)
-0:8 'a1' (in int)
-0:8 add (temp int)
-0:8 'a2' (in int)
-0:8 component-wise multiply (temp int)
-0:8 'a3' (in int)
-0:8 'a4' (in int)
+0:8 Sequence
+0:8 move second child to first child (temp int)
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:8 add (temp int)
+0:8 left-shift (temp int)
+0:8 add (temp int)
+0:8 component-wise multiply (temp int)
+0:8 'a1' (layout(location=0 ) in int)
+0:8 'a2' (layout(location=1 ) in int)
+0:8 'a3' (layout(location=2 ) in int)
+0:8 'a4' (layout(location=3 ) in int)
+0:8 left-shift (temp int)
+0:8 'a1' (layout(location=0 ) in int)
+0:8 add (temp int)
+0:8 'a2' (layout(location=1 ) in int)
+0:8 component-wise multiply (temp int)
+0:8 'a3' (layout(location=2 ) in int)
+0:8 'a4' (layout(location=3 ) in int)
+0:8 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:? 'a1' (layout(location=0 ) in int)
+0:? 'a2' (layout(location=1 ) in int)
+0:? 'a3' (layout(location=2 ) in int)
+0:? 'a4' (layout(location=3 ) in int)
Linked fragment stage:
@@ -34,70 +42,86 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:10 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
+0:7 Function Definition: PixelShaderFunction(i1;i1;i1;i1; (global int)
0:7 Function Parameters:
-0:7 'a1' (in int)
-0:7 'a2' (in int)
-0:7 'a3' (in int)
-0:7 'a4' (in int)
+0:7 'a1' (layout(location=0 ) in int)
+0:7 'a2' (layout(location=1 ) in int)
+0:7 'a3' (layout(location=2 ) in int)
+0:7 'a4' (layout(location=3 ) in int)
0:? Sequence
-0:8 Branch: Return with expression
-0:8 add (temp int)
-0:8 left-shift (temp int)
-0:8 add (temp int)
-0:8 component-wise multiply (temp int)
-0:8 'a1' (in int)
-0:8 'a2' (in int)
-0:8 'a3' (in int)
-0:8 'a4' (in int)
-0:8 left-shift (temp int)
-0:8 'a1' (in int)
-0:8 add (temp int)
-0:8 'a2' (in int)
-0:8 component-wise multiply (temp int)
-0:8 'a3' (in int)
-0:8 'a4' (in int)
+0:8 Sequence
+0:8 move second child to first child (temp int)
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:8 add (temp int)
+0:8 left-shift (temp int)
+0:8 add (temp int)
+0:8 component-wise multiply (temp int)
+0:8 'a1' (layout(location=0 ) in int)
+0:8 'a2' (layout(location=1 ) in int)
+0:8 'a3' (layout(location=2 ) in int)
+0:8 'a4' (layout(location=3 ) in int)
+0:8 left-shift (temp int)
+0:8 'a1' (layout(location=0 ) in int)
+0:8 add (temp int)
+0:8 'a2' (layout(location=1 ) in int)
+0:8 component-wise multiply (temp int)
+0:8 'a3' (layout(location=2 ) in int)
+0:8 'a4' (layout(location=3 ) in int)
+0:8 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out int)
+0:? 'a1' (layout(location=0 ) in int)
+0:? 'a2' (layout(location=1 ) in int)
+0:? 'a3' (layout(location=2 ) in int)
+0:? 'a4' (layout(location=3 ) in int)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 28
+// Id's are bound by 30
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 8 10 13 16
+ EntryPoint Fragment 4 "PixelShaderFunction" 8 10 12 15 18
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 8 "a1"
- Name 10 "a2"
- Name 13 "a3"
- Name 16 "a4"
+ Name 8 "@entryPointOutput"
+ Name 10 "a1"
+ Name 12 "a2"
+ Name 15 "a3"
+ Name 18 "a4"
+ Decorate 8(@entryPointOutput) Location 0
+ Decorate 10(a1) Location 0
+ Decorate 12(a2) Location 1
+ Decorate 15(a3) Location 2
+ Decorate 18(a4) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
- 7: TypePointer Input 6(int)
- 8(a1): 7(ptr) Variable Input
- 10(a2): 7(ptr) Variable Input
- 13(a3): 7(ptr) Variable Input
- 16(a4): 7(ptr) Variable Input
+ 7: TypePointer Output 6(int)
+8(@entryPointOutput): 7(ptr) Variable Output
+ 9: TypePointer Input 6(int)
+ 10(a1): 9(ptr) Variable Input
+ 12(a2): 9(ptr) Variable Input
+ 15(a3): 9(ptr) Variable Input
+ 18(a4): 9(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
- 9: 6(int) Load 8(a1)
- 11: 6(int) Load 10(a2)
- 12: 6(int) IMul 9 11
- 14: 6(int) Load 13(a3)
- 15: 6(int) IAdd 12 14
- 17: 6(int) Load 16(a4)
- 18: 6(int) ShiftLeftLogical 15 17
- 19: 6(int) Load 8(a1)
- 20: 6(int) Load 10(a2)
- 21: 6(int) Load 13(a3)
- 22: 6(int) Load 16(a4)
- 23: 6(int) IMul 21 22
- 24: 6(int) IAdd 20 23
- 25: 6(int) ShiftLeftLogical 19 24
- 26: 6(int) IAdd 18 25
- ReturnValue 26
+ 11: 6(int) Load 10(a1)
+ 13: 6(int) Load 12(a2)
+ 14: 6(int) IMul 11 13
+ 16: 6(int) Load 15(a3)
+ 17: 6(int) IAdd 14 16
+ 19: 6(int) Load 18(a4)
+ 20: 6(int) ShiftLeftLogical 17 19
+ 21: 6(int) Load 10(a1)
+ 22: 6(int) Load 12(a2)
+ 23: 6(int) Load 15(a3)
+ 24: 6(int) Load 18(a4)
+ 25: 6(int) IMul 23 24
+ 26: 6(int) IAdd 22 25
+ 27: 6(int) ShiftLeftLogical 21 26
+ 28: 6(int) IAdd 20 27
+ Store 8(@entryPointOutput) 28
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out
new file mode 100644
index 0000000..d76dc3f
--- /dev/null
+++ b/Test/baseResults/hlsl.precise.frag.out
@@ -0,0 +1,125 @@
+hlsl.precise.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: MyFunction(f1;vf3; (global void)
+0:6 Function Parameters:
+0:6 'myfloat' (noContraction in float)
+0:6 'myfloat3' (noContraction out 3-component vector of float)
+0:9 Function Definition: main( (global structure{noContraction temp 4-component vector of float color})
+0:9 Function Parameters:
+0:? Sequence
+0:11 move second child to first child (noContraction temp 4-component vector of float)
+0:11 color: direct index for structure (noContraction temp 4-component vector of float)
+0:11 'ps_output' (temp structure{noContraction temp 4-component vector of float color})
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:? Sequence
+0:? Sequence
+0:12 move second child to first child (noContraction temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float)
+0:12 color: direct index for structure (noContraction temp 4-component vector of float)
+0:12 'ps_output' (temp structure{noContraction temp 4-component vector of float color})
+0:12 Constant:
+0:12 0 (const int)
+0:12 Branch: Return
+0:? Linker Objects
+0:? 'precisefloat' (noContraction global float)
+0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:6 Function Definition: MyFunction(f1;vf3; (global void)
+0:6 Function Parameters:
+0:6 'myfloat' (noContraction in float)
+0:6 'myfloat3' (noContraction out 3-component vector of float)
+0:9 Function Definition: main( (global structure{noContraction temp 4-component vector of float color})
+0:9 Function Parameters:
+0:? Sequence
+0:11 move second child to first child (noContraction temp 4-component vector of float)
+0:11 color: direct index for structure (noContraction temp 4-component vector of float)
+0:11 'ps_output' (temp structure{noContraction temp 4-component vector of float color})
+0:11 Constant:
+0:11 0 (const int)
+0:11 Constant:
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:11 1.000000
+0:? Sequence
+0:? Sequence
+0:12 move second child to first child (noContraction temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float)
+0:12 color: direct index for structure (noContraction temp 4-component vector of float)
+0:12 'ps_output' (temp structure{noContraction temp 4-component vector of float color})
+0:12 Constant:
+0:12 0 (const int)
+0:12 Branch: Return
+0:? Linker Objects
+0:? 'precisefloat' (noContraction global float)
+0:? 'color' (layout(location=0 ) noContraction out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 32
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 26
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 13 "MyFunction(f1;vf3;"
+ Name 11 "myfloat"
+ Name 12 "myfloat3"
+ Name 16 "PS_OUTPUT"
+ MemberName 16(PS_OUTPUT) 0 "color"
+ Name 18 "ps_output"
+ Name 26 "color"
+ Name 31 "precisefloat"
+ Decorate 26(color) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Function 6(float)
+ 8: TypeVector 6(float) 3
+ 9: TypePointer Function 8(fvec3)
+ 10: TypeFunction 2 7(ptr) 9(ptr)
+ 15: TypeVector 6(float) 4
+ 16(PS_OUTPUT): TypeStruct 15(fvec4)
+ 17: TypePointer Function 16(PS_OUTPUT)
+ 19: TypeInt 32 1
+ 20: 19(int) Constant 0
+ 21: 6(float) Constant 1065353216
+ 22: 15(fvec4) ConstantComposite 21 21 21 21
+ 23: TypePointer Function 15(fvec4)
+ 25: TypePointer Output 15(fvec4)
+ 26(color): 25(ptr) Variable Output
+ 30: TypePointer Private 6(float)
+31(precisefloat): 30(ptr) Variable Private
+ 4(main): 2 Function None 3
+ 5: Label
+ 18(ps_output): 17(ptr) Variable Function
+ 24: 23(ptr) AccessChain 18(ps_output) 20
+ Store 24 22
+ 27: 23(ptr) AccessChain 18(ps_output) 20
+ 28: 15(fvec4) Load 27
+ Store 26(color) 28
+ Return
+ FunctionEnd
+13(MyFunction(f1;vf3;): 2 Function None 10
+ 11(myfloat): 7(ptr) FunctionParameter
+ 12(myfloat3): 9(ptr) FunctionParameter
+ 14: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
new file mode 100644
index 0000000..3f1c788
--- /dev/null
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -0,0 +1,1709 @@
+hlsl.promotions.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19 Function Definition: Fn_F3(vf3; (global void)
+0:19 Function Parameters:
+0:19 'x' (in 3-component vector of float)
+0:20 Function Definition: Fn_I3(vi3; (global void)
+0:20 Function Parameters:
+0:20 'x' (in 3-component vector of int)
+0:21 Function Definition: Fn_U3(vu3; (global void)
+0:21 Function Parameters:
+0:21 'x' (in 3-component vector of uint)
+0:22 Function Definition: Fn_B3(vb3; (global void)
+0:22 Function Parameters:
+0:22 'x' (in 3-component vector of bool)
+0:23 Function Definition: Fn_D3(vd3; (global void)
+0:23 Function Parameters:
+0:23 'x' (in 3-component vector of double)
+0:26 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26 Function Parameters:
+0:26 'p' (out 3-component vector of float)
+0:? Sequence
+0:26 move second child to first child (temp 3-component vector of float)
+0:26 'p' (out 3-component vector of float)
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:26 Branch: Return with expression
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:27 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:27 Function Parameters:
+0:27 'p' (out 3-component vector of float)
+0:? Sequence
+0:27 move second child to first child (temp 3-component vector of float)
+0:27 'p' (out 3-component vector of float)
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:27 Branch: Return with expression
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:28 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:28 Function Parameters:
+0:28 'p' (out 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child (temp 3-component vector of float)
+0:28 'p' (out 3-component vector of float)
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:28 Branch: Return with expression
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:29 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:29 Function Parameters:
+0:29 'p' (out 3-component vector of float)
+0:? Sequence
+0:29 move second child to first child (temp 3-component vector of float)
+0:29 'p' (out 3-component vector of float)
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:29 Branch: Return with expression
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:31 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:31 Function Parameters:
+0:31 'p' (out 3-component vector of int)
+0:? Sequence
+0:31 move second child to first child (temp 3-component vector of int)
+0:31 'p' (out 3-component vector of int)
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:31 Branch: Return with expression
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:32 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:32 Function Parameters:
+0:32 'p' (out 3-component vector of int)
+0:? Sequence
+0:32 move second child to first child (temp 3-component vector of int)
+0:32 'p' (out 3-component vector of int)
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:32 Branch: Return with expression
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:33 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:33 Function Parameters:
+0:33 'p' (out 3-component vector of int)
+0:? Sequence
+0:33 move second child to first child (temp 3-component vector of int)
+0:33 'p' (out 3-component vector of int)
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:33 Branch: Return with expression
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:34 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:34 Function Parameters:
+0:34 'p' (out 3-component vector of int)
+0:? Sequence
+0:34 move second child to first child (temp 3-component vector of int)
+0:34 'p' (out 3-component vector of int)
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:34 Branch: Return with expression
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:36 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:36 Function Parameters:
+0:36 'p' (out 3-component vector of uint)
+0:? Sequence
+0:36 move second child to first child (temp 3-component vector of uint)
+0:36 'p' (out 3-component vector of uint)
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:36 Branch: Return with expression
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:37 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:37 Function Parameters:
+0:37 'p' (out 3-component vector of uint)
+0:? Sequence
+0:37 move second child to first child (temp 3-component vector of uint)
+0:37 'p' (out 3-component vector of uint)
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:37 Branch: Return with expression
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:38 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:38 Function Parameters:
+0:38 'p' (out 3-component vector of uint)
+0:? Sequence
+0:38 move second child to first child (temp 3-component vector of uint)
+0:38 'p' (out 3-component vector of uint)
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:38 Branch: Return with expression
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:39 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:39 Function Parameters:
+0:39 'p' (out 3-component vector of uint)
+0:? Sequence
+0:39 move second child to first child (temp 3-component vector of uint)
+0:39 'p' (out 3-component vector of uint)
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:39 Branch: Return with expression
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:41 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:41 Function Parameters:
+0:41 'p' (out 3-component vector of bool)
+0:? Sequence
+0:41 move second child to first child (temp 3-component vector of bool)
+0:41 'p' (out 3-component vector of bool)
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:41 Branch: Return with expression
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:42 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:42 Function Parameters:
+0:42 'p' (out 3-component vector of bool)
+0:? Sequence
+0:42 move second child to first child (temp 3-component vector of bool)
+0:42 'p' (out 3-component vector of bool)
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:42 Branch: Return with expression
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:43 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:43 Function Parameters:
+0:43 'p' (out 3-component vector of bool)
+0:? Sequence
+0:43 move second child to first child (temp 3-component vector of bool)
+0:43 'p' (out 3-component vector of bool)
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:43 Branch: Return with expression
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:44 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:44 Function Parameters:
+0:44 'p' (out 3-component vector of bool)
+0:? Sequence
+0:44 move second child to first child (temp 3-component vector of bool)
+0:44 'p' (out 3-component vector of bool)
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:44 Branch: Return with expression
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:46 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:46 Function Parameters:
+0:46 'p' (out 3-component vector of double)
+0:? Sequence
+0:46 move second child to first child (temp 3-component vector of double)
+0:46 'p' (out 3-component vector of double)
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:46 Branch: Return with expression
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:47 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:47 Function Parameters:
+0:47 'p' (out 3-component vector of double)
+0:? Sequence
+0:47 move second child to first child (temp 3-component vector of double)
+0:47 'p' (out 3-component vector of double)
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:47 Branch: Return with expression
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:48 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:48 Function Parameters:
+0:48 'p' (out 3-component vector of double)
+0:? Sequence
+0:48 move second child to first child (temp 3-component vector of double)
+0:48 'p' (out 3-component vector of double)
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:48 Branch: Return with expression
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:49 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:49 Function Parameters:
+0:49 'p' (out 3-component vector of double)
+0:? Sequence
+0:49 move second child to first child (temp 3-component vector of double)
+0:49 'p' (out 3-component vector of double)
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:49 Branch: Return with expression
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:52 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:52 Function Parameters:
+0:? Sequence
+0:54 Sequence
+0:54 move second child to first child (temp 3-component vector of float)
+0:54 'r00' (temp 3-component vector of float)
+0:54 Convert int to float (temp 3-component vector of float)
+0:54 'i3' (uniform 3-component vector of int)
+0:55 Sequence
+0:55 move second child to first child (temp 3-component vector of float)
+0:55 'r01' (temp 3-component vector of float)
+0:55 Convert bool to float (temp 3-component vector of float)
+0:55 'b3' (uniform 3-component vector of bool)
+0:56 Sequence
+0:56 move second child to first child (temp 3-component vector of float)
+0:56 'r02' (temp 3-component vector of float)
+0:56 Convert uint to float (temp 3-component vector of float)
+0:56 'u3' (uniform 3-component vector of uint)
+0:57 Sequence
+0:57 move second child to first child (temp 3-component vector of float)
+0:57 'r03' (temp 3-component vector of float)
+0:57 Convert double to float (temp 3-component vector of float)
+0:57 'd3' (uniform 3-component vector of double)
+0:59 Sequence
+0:59 move second child to first child (temp 3-component vector of int)
+0:59 'r10' (temp 3-component vector of int)
+0:59 Convert bool to int (temp 3-component vector of int)
+0:59 'b3' (uniform 3-component vector of bool)
+0:60 Sequence
+0:60 move second child to first child (temp 3-component vector of int)
+0:60 'r11' (temp 3-component vector of int)
+0:60 Convert uint to int (temp 3-component vector of int)
+0:60 'u3' (uniform 3-component vector of uint)
+0:61 Sequence
+0:61 move second child to first child (temp 3-component vector of int)
+0:61 'r12' (temp 3-component vector of int)
+0:61 Convert float to int (temp 3-component vector of int)
+0:61 'f3' (uniform 3-component vector of float)
+0:62 Sequence
+0:62 move second child to first child (temp 3-component vector of int)
+0:62 'r13' (temp 3-component vector of int)
+0:62 Convert double to int (temp 3-component vector of int)
+0:62 'd3' (uniform 3-component vector of double)
+0:64 Sequence
+0:64 move second child to first child (temp 3-component vector of uint)
+0:64 'r20' (temp 3-component vector of uint)
+0:64 Convert bool to uint (temp 3-component vector of uint)
+0:64 'b3' (uniform 3-component vector of bool)
+0:65 Sequence
+0:65 move second child to first child (temp 3-component vector of uint)
+0:65 'r21' (temp 3-component vector of uint)
+0:65 Convert int to uint (temp 3-component vector of uint)
+0:65 'i3' (uniform 3-component vector of int)
+0:66 Sequence
+0:66 move second child to first child (temp 3-component vector of uint)
+0:66 'r22' (temp 3-component vector of uint)
+0:66 Convert float to uint (temp 3-component vector of uint)
+0:66 'f3' (uniform 3-component vector of float)
+0:67 Sequence
+0:67 move second child to first child (temp 3-component vector of uint)
+0:67 'r23' (temp 3-component vector of uint)
+0:67 Convert double to uint (temp 3-component vector of uint)
+0:67 'd3' (uniform 3-component vector of double)
+0:69 Sequence
+0:69 move second child to first child (temp 3-component vector of bool)
+0:69 'r30' (temp 3-component vector of bool)
+0:69 Convert int to bool (temp 3-component vector of bool)
+0:69 'i3' (uniform 3-component vector of int)
+0:70 Sequence
+0:70 move second child to first child (temp 3-component vector of bool)
+0:70 'r31' (temp 3-component vector of bool)
+0:70 Convert uint to bool (temp 3-component vector of bool)
+0:70 'u3' (uniform 3-component vector of uint)
+0:71 Sequence
+0:71 move second child to first child (temp 3-component vector of bool)
+0:71 'r32' (temp 3-component vector of bool)
+0:71 Convert float to bool (temp 3-component vector of bool)
+0:71 'f3' (uniform 3-component vector of float)
+0:72 Sequence
+0:72 move second child to first child (temp 3-component vector of bool)
+0:72 'r33' (temp 3-component vector of bool)
+0:72 Convert double to bool (temp 3-component vector of bool)
+0:72 'd3' (uniform 3-component vector of double)
+0:74 Sequence
+0:74 move second child to first child (temp 3-component vector of double)
+0:74 'r40' (temp 3-component vector of double)
+0:74 Convert int to double (temp 3-component vector of double)
+0:74 'i3' (uniform 3-component vector of int)
+0:75 Sequence
+0:75 move second child to first child (temp 3-component vector of double)
+0:75 'r41' (temp 3-component vector of double)
+0:75 Convert uint to double (temp 3-component vector of double)
+0:75 'u3' (uniform 3-component vector of uint)
+0:76 Sequence
+0:76 move second child to first child (temp 3-component vector of double)
+0:76 'r42' (temp 3-component vector of double)
+0:76 Convert float to double (temp 3-component vector of double)
+0:76 'f3' (uniform 3-component vector of float)
+0:77 Sequence
+0:77 move second child to first child (temp 3-component vector of double)
+0:77 'r43' (temp 3-component vector of double)
+0:77 Convert bool to double (temp 3-component vector of double)
+0:77 'b3' (uniform 3-component vector of bool)
+0:80 multiply second child into first child (temp 3-component vector of float)
+0:80 'r00' (temp 3-component vector of float)
+0:80 Convert int to float (temp 3-component vector of float)
+0:80 'i3' (uniform 3-component vector of int)
+0:81 multiply second child into first child (temp 3-component vector of float)
+0:81 'r01' (temp 3-component vector of float)
+0:81 Convert bool to float (temp 3-component vector of float)
+0:81 'b3' (uniform 3-component vector of bool)
+0:82 multiply second child into first child (temp 3-component vector of float)
+0:82 'r02' (temp 3-component vector of float)
+0:82 Convert uint to float (temp 3-component vector of float)
+0:82 'u3' (uniform 3-component vector of uint)
+0:83 multiply second child into first child (temp 3-component vector of float)
+0:83 'r03' (temp 3-component vector of float)
+0:83 Convert double to float (temp 3-component vector of float)
+0:83 'd3' (uniform 3-component vector of double)
+0:85 multiply second child into first child (temp 3-component vector of int)
+0:85 'r10' (temp 3-component vector of int)
+0:85 Convert bool to int (temp 3-component vector of int)
+0:85 'b3' (uniform 3-component vector of bool)
+0:86 multiply second child into first child (temp 3-component vector of int)
+0:86 'r11' (temp 3-component vector of int)
+0:86 Convert uint to int (temp 3-component vector of int)
+0:86 'u3' (uniform 3-component vector of uint)
+0:87 multiply second child into first child (temp 3-component vector of int)
+0:87 'r12' (temp 3-component vector of int)
+0:87 Convert float to int (temp 3-component vector of int)
+0:87 'f3' (uniform 3-component vector of float)
+0:88 multiply second child into first child (temp 3-component vector of int)
+0:88 'r13' (temp 3-component vector of int)
+0:88 Convert double to int (temp 3-component vector of int)
+0:88 'd3' (uniform 3-component vector of double)
+0:90 multiply second child into first child (temp 3-component vector of uint)
+0:90 'r20' (temp 3-component vector of uint)
+0:90 Convert bool to uint (temp 3-component vector of uint)
+0:90 'b3' (uniform 3-component vector of bool)
+0:91 multiply second child into first child (temp 3-component vector of uint)
+0:91 'r21' (temp 3-component vector of uint)
+0:91 Convert int to uint (temp 3-component vector of uint)
+0:91 'i3' (uniform 3-component vector of int)
+0:92 multiply second child into first child (temp 3-component vector of uint)
+0:92 'r22' (temp 3-component vector of uint)
+0:92 Convert float to uint (temp 3-component vector of uint)
+0:92 'f3' (uniform 3-component vector of float)
+0:93 multiply second child into first child (temp 3-component vector of uint)
+0:93 'r23' (temp 3-component vector of uint)
+0:93 Convert double to uint (temp 3-component vector of uint)
+0:93 'd3' (uniform 3-component vector of double)
+0:97 multiply second child into first child (temp 3-component vector of double)
+0:97 'r40' (temp 3-component vector of double)
+0:97 Convert int to double (temp 3-component vector of double)
+0:97 'i3' (uniform 3-component vector of int)
+0:98 multiply second child into first child (temp 3-component vector of double)
+0:98 'r41' (temp 3-component vector of double)
+0:98 Convert uint to double (temp 3-component vector of double)
+0:98 'u3' (uniform 3-component vector of uint)
+0:99 multiply second child into first child (temp 3-component vector of double)
+0:99 'r42' (temp 3-component vector of double)
+0:99 Convert float to double (temp 3-component vector of double)
+0:99 'f3' (uniform 3-component vector of float)
+0:100 multiply second child into first child (temp 3-component vector of double)
+0:100 'r43' (temp 3-component vector of double)
+0:100 Convert bool to double (temp 3-component vector of double)
+0:100 'b3' (uniform 3-component vector of bool)
+0:103 vector scale second child into first child (temp 3-component vector of float)
+0:103 'r00' (temp 3-component vector of float)
+0:103 Convert int to float (temp float)
+0:103 'is' (uniform int)
+0:104 vector scale second child into first child (temp 3-component vector of float)
+0:104 'r01' (temp 3-component vector of float)
+0:104 Convert bool to float (temp float)
+0:104 'bs' (uniform bool)
+0:105 vector scale second child into first child (temp 3-component vector of float)
+0:105 'r02' (temp 3-component vector of float)
+0:105 Convert uint to float (temp float)
+0:105 'us' (uniform uint)
+0:106 vector scale second child into first child (temp 3-component vector of float)
+0:106 'r03' (temp 3-component vector of float)
+0:106 Convert double to float (temp float)
+0:106 'ds' (uniform double)
+0:108 vector scale second child into first child (temp 3-component vector of int)
+0:108 'r10' (temp 3-component vector of int)
+0:108 Convert bool to int (temp int)
+0:108 'bs' (uniform bool)
+0:109 vector scale second child into first child (temp 3-component vector of int)
+0:109 'r11' (temp 3-component vector of int)
+0:109 Convert uint to int (temp int)
+0:109 'us' (uniform uint)
+0:110 vector scale second child into first child (temp 3-component vector of int)
+0:110 'r12' (temp 3-component vector of int)
+0:110 Convert float to int (temp int)
+0:110 'fs' (uniform float)
+0:111 vector scale second child into first child (temp 3-component vector of int)
+0:111 'r13' (temp 3-component vector of int)
+0:111 Convert double to int (temp int)
+0:111 'ds' (uniform double)
+0:113 vector scale second child into first child (temp 3-component vector of uint)
+0:113 'r20' (temp 3-component vector of uint)
+0:113 Convert bool to uint (temp uint)
+0:113 'bs' (uniform bool)
+0:114 vector scale second child into first child (temp 3-component vector of uint)
+0:114 'r21' (temp 3-component vector of uint)
+0:114 Convert int to uint (temp uint)
+0:114 'is' (uniform int)
+0:115 vector scale second child into first child (temp 3-component vector of uint)
+0:115 'r22' (temp 3-component vector of uint)
+0:115 Convert float to uint (temp uint)
+0:115 'fs' (uniform float)
+0:116 vector scale second child into first child (temp 3-component vector of uint)
+0:116 'r23' (temp 3-component vector of uint)
+0:116 Convert double to uint (temp uint)
+0:116 'ds' (uniform double)
+0:120 vector scale second child into first child (temp 3-component vector of double)
+0:120 'r40' (temp 3-component vector of double)
+0:120 Convert int to double (temp double)
+0:120 'is' (uniform int)
+0:121 vector scale second child into first child (temp 3-component vector of double)
+0:121 'r41' (temp 3-component vector of double)
+0:121 Convert uint to double (temp double)
+0:121 'us' (uniform uint)
+0:122 vector scale second child into first child (temp 3-component vector of double)
+0:122 'r42' (temp 3-component vector of double)
+0:122 Convert float to double (temp double)
+0:122 'fs' (uniform float)
+0:123 vector scale second child into first child (temp 3-component vector of double)
+0:123 'r43' (temp 3-component vector of double)
+0:123 Convert bool to double (temp double)
+0:123 'bs' (uniform bool)
+0:193 Sequence
+0:193 move second child to first child (temp int)
+0:193 'c1' (temp int)
+0:193 Constant:
+0:193 3 (const int)
+0:194 Sequence
+0:194 move second child to first child (temp int)
+0:194 'c2' (temp int)
+0:194 Constant:
+0:194 3 (const int)
+0:196 Sequence
+0:196 move second child to first child (temp 4-component vector of float)
+0:196 'outval' (temp 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:196 Constant:
+0:196 3.600000
+0:196 Constant:
+0:196 3.600000
+0:196 Convert int to float (temp float)
+0:196 'c1' (temp int)
+0:196 Convert int to float (temp float)
+0:196 'c2' (temp int)
+0:199 move second child to first child (temp 4-component vector of float)
+0:199 Color: direct index for structure (temp 4-component vector of float)
+0:199 'psout' (temp structure{temp 4-component vector of float Color})
+0:199 Constant:
+0:199 0 (const int)
+0:199 'outval' (temp 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:200 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:200 Color: direct index for structure (temp 4-component vector of float)
+0:200 'psout' (temp structure{temp 4-component vector of float Color})
+0:200 Constant:
+0:200 0 (const int)
+0:200 Branch: Return
+0:? Linker Objects
+0:? 'i3' (uniform 3-component vector of int)
+0:? 'b3' (uniform 3-component vector of bool)
+0:? 'f3' (uniform 3-component vector of float)
+0:? 'u3' (uniform 3-component vector of uint)
+0:? 'd3' (uniform 3-component vector of double)
+0:? 'is' (uniform int)
+0:? 'bs' (uniform bool)
+0:? 'fs' (uniform float)
+0:? 'us' (uniform uint)
+0:? 'ds' (uniform double)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:19 Function Definition: Fn_F3(vf3; (global void)
+0:19 Function Parameters:
+0:19 'x' (in 3-component vector of float)
+0:20 Function Definition: Fn_I3(vi3; (global void)
+0:20 Function Parameters:
+0:20 'x' (in 3-component vector of int)
+0:21 Function Definition: Fn_U3(vu3; (global void)
+0:21 Function Parameters:
+0:21 'x' (in 3-component vector of uint)
+0:22 Function Definition: Fn_B3(vb3; (global void)
+0:22 Function Parameters:
+0:22 'x' (in 3-component vector of bool)
+0:23 Function Definition: Fn_D3(vd3; (global void)
+0:23 Function Parameters:
+0:23 'x' (in 3-component vector of double)
+0:26 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26 Function Parameters:
+0:26 'p' (out 3-component vector of float)
+0:? Sequence
+0:26 move second child to first child (temp 3-component vector of float)
+0:26 'p' (out 3-component vector of float)
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:26 Branch: Return with expression
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:27 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:27 Function Parameters:
+0:27 'p' (out 3-component vector of float)
+0:? Sequence
+0:27 move second child to first child (temp 3-component vector of float)
+0:27 'p' (out 3-component vector of float)
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:27 Branch: Return with expression
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:28 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:28 Function Parameters:
+0:28 'p' (out 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child (temp 3-component vector of float)
+0:28 'p' (out 3-component vector of float)
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:28 Branch: Return with expression
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:29 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:29 Function Parameters:
+0:29 'p' (out 3-component vector of float)
+0:? Sequence
+0:29 move second child to first child (temp 3-component vector of float)
+0:29 'p' (out 3-component vector of float)
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:29 Branch: Return with expression
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:31 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:31 Function Parameters:
+0:31 'p' (out 3-component vector of int)
+0:? Sequence
+0:31 move second child to first child (temp 3-component vector of int)
+0:31 'p' (out 3-component vector of int)
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:31 Branch: Return with expression
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:32 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:32 Function Parameters:
+0:32 'p' (out 3-component vector of int)
+0:? Sequence
+0:32 move second child to first child (temp 3-component vector of int)
+0:32 'p' (out 3-component vector of int)
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:32 Branch: Return with expression
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:33 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:33 Function Parameters:
+0:33 'p' (out 3-component vector of int)
+0:? Sequence
+0:33 move second child to first child (temp 3-component vector of int)
+0:33 'p' (out 3-component vector of int)
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:33 Branch: Return with expression
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:34 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:34 Function Parameters:
+0:34 'p' (out 3-component vector of int)
+0:? Sequence
+0:34 move second child to first child (temp 3-component vector of int)
+0:34 'p' (out 3-component vector of int)
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:34 Branch: Return with expression
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:36 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:36 Function Parameters:
+0:36 'p' (out 3-component vector of uint)
+0:? Sequence
+0:36 move second child to first child (temp 3-component vector of uint)
+0:36 'p' (out 3-component vector of uint)
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:36 Branch: Return with expression
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:37 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:37 Function Parameters:
+0:37 'p' (out 3-component vector of uint)
+0:? Sequence
+0:37 move second child to first child (temp 3-component vector of uint)
+0:37 'p' (out 3-component vector of uint)
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:37 Branch: Return with expression
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:38 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:38 Function Parameters:
+0:38 'p' (out 3-component vector of uint)
+0:? Sequence
+0:38 move second child to first child (temp 3-component vector of uint)
+0:38 'p' (out 3-component vector of uint)
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:38 Branch: Return with expression
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:39 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:39 Function Parameters:
+0:39 'p' (out 3-component vector of uint)
+0:? Sequence
+0:39 move second child to first child (temp 3-component vector of uint)
+0:39 'p' (out 3-component vector of uint)
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:39 Branch: Return with expression
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:41 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:41 Function Parameters:
+0:41 'p' (out 3-component vector of bool)
+0:? Sequence
+0:41 move second child to first child (temp 3-component vector of bool)
+0:41 'p' (out 3-component vector of bool)
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:41 Branch: Return with expression
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:42 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:42 Function Parameters:
+0:42 'p' (out 3-component vector of bool)
+0:? Sequence
+0:42 move second child to first child (temp 3-component vector of bool)
+0:42 'p' (out 3-component vector of bool)
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:42 Branch: Return with expression
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:43 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:43 Function Parameters:
+0:43 'p' (out 3-component vector of bool)
+0:? Sequence
+0:43 move second child to first child (temp 3-component vector of bool)
+0:43 'p' (out 3-component vector of bool)
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:43 Branch: Return with expression
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:44 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:44 Function Parameters:
+0:44 'p' (out 3-component vector of bool)
+0:? Sequence
+0:44 move second child to first child (temp 3-component vector of bool)
+0:44 'p' (out 3-component vector of bool)
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:44 Branch: Return with expression
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:46 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:46 Function Parameters:
+0:46 'p' (out 3-component vector of double)
+0:? Sequence
+0:46 move second child to first child (temp 3-component vector of double)
+0:46 'p' (out 3-component vector of double)
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:46 Branch: Return with expression
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:47 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:47 Function Parameters:
+0:47 'p' (out 3-component vector of double)
+0:? Sequence
+0:47 move second child to first child (temp 3-component vector of double)
+0:47 'p' (out 3-component vector of double)
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:47 Branch: Return with expression
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:48 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:48 Function Parameters:
+0:48 'p' (out 3-component vector of double)
+0:? Sequence
+0:48 move second child to first child (temp 3-component vector of double)
+0:48 'p' (out 3-component vector of double)
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:48 Branch: Return with expression
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:49 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:49 Function Parameters:
+0:49 'p' (out 3-component vector of double)
+0:? Sequence
+0:49 move second child to first child (temp 3-component vector of double)
+0:49 'p' (out 3-component vector of double)
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:49 Branch: Return with expression
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:52 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:52 Function Parameters:
+0:? Sequence
+0:54 Sequence
+0:54 move second child to first child (temp 3-component vector of float)
+0:54 'r00' (temp 3-component vector of float)
+0:54 Convert int to float (temp 3-component vector of float)
+0:54 'i3' (uniform 3-component vector of int)
+0:55 Sequence
+0:55 move second child to first child (temp 3-component vector of float)
+0:55 'r01' (temp 3-component vector of float)
+0:55 Convert bool to float (temp 3-component vector of float)
+0:55 'b3' (uniform 3-component vector of bool)
+0:56 Sequence
+0:56 move second child to first child (temp 3-component vector of float)
+0:56 'r02' (temp 3-component vector of float)
+0:56 Convert uint to float (temp 3-component vector of float)
+0:56 'u3' (uniform 3-component vector of uint)
+0:57 Sequence
+0:57 move second child to first child (temp 3-component vector of float)
+0:57 'r03' (temp 3-component vector of float)
+0:57 Convert double to float (temp 3-component vector of float)
+0:57 'd3' (uniform 3-component vector of double)
+0:59 Sequence
+0:59 move second child to first child (temp 3-component vector of int)
+0:59 'r10' (temp 3-component vector of int)
+0:59 Convert bool to int (temp 3-component vector of int)
+0:59 'b3' (uniform 3-component vector of bool)
+0:60 Sequence
+0:60 move second child to first child (temp 3-component vector of int)
+0:60 'r11' (temp 3-component vector of int)
+0:60 Convert uint to int (temp 3-component vector of int)
+0:60 'u3' (uniform 3-component vector of uint)
+0:61 Sequence
+0:61 move second child to first child (temp 3-component vector of int)
+0:61 'r12' (temp 3-component vector of int)
+0:61 Convert float to int (temp 3-component vector of int)
+0:61 'f3' (uniform 3-component vector of float)
+0:62 Sequence
+0:62 move second child to first child (temp 3-component vector of int)
+0:62 'r13' (temp 3-component vector of int)
+0:62 Convert double to int (temp 3-component vector of int)
+0:62 'd3' (uniform 3-component vector of double)
+0:64 Sequence
+0:64 move second child to first child (temp 3-component vector of uint)
+0:64 'r20' (temp 3-component vector of uint)
+0:64 Convert bool to uint (temp 3-component vector of uint)
+0:64 'b3' (uniform 3-component vector of bool)
+0:65 Sequence
+0:65 move second child to first child (temp 3-component vector of uint)
+0:65 'r21' (temp 3-component vector of uint)
+0:65 Convert int to uint (temp 3-component vector of uint)
+0:65 'i3' (uniform 3-component vector of int)
+0:66 Sequence
+0:66 move second child to first child (temp 3-component vector of uint)
+0:66 'r22' (temp 3-component vector of uint)
+0:66 Convert float to uint (temp 3-component vector of uint)
+0:66 'f3' (uniform 3-component vector of float)
+0:67 Sequence
+0:67 move second child to first child (temp 3-component vector of uint)
+0:67 'r23' (temp 3-component vector of uint)
+0:67 Convert double to uint (temp 3-component vector of uint)
+0:67 'd3' (uniform 3-component vector of double)
+0:69 Sequence
+0:69 move second child to first child (temp 3-component vector of bool)
+0:69 'r30' (temp 3-component vector of bool)
+0:69 Convert int to bool (temp 3-component vector of bool)
+0:69 'i3' (uniform 3-component vector of int)
+0:70 Sequence
+0:70 move second child to first child (temp 3-component vector of bool)
+0:70 'r31' (temp 3-component vector of bool)
+0:70 Convert uint to bool (temp 3-component vector of bool)
+0:70 'u3' (uniform 3-component vector of uint)
+0:71 Sequence
+0:71 move second child to first child (temp 3-component vector of bool)
+0:71 'r32' (temp 3-component vector of bool)
+0:71 Convert float to bool (temp 3-component vector of bool)
+0:71 'f3' (uniform 3-component vector of float)
+0:72 Sequence
+0:72 move second child to first child (temp 3-component vector of bool)
+0:72 'r33' (temp 3-component vector of bool)
+0:72 Convert double to bool (temp 3-component vector of bool)
+0:72 'd3' (uniform 3-component vector of double)
+0:74 Sequence
+0:74 move second child to first child (temp 3-component vector of double)
+0:74 'r40' (temp 3-component vector of double)
+0:74 Convert int to double (temp 3-component vector of double)
+0:74 'i3' (uniform 3-component vector of int)
+0:75 Sequence
+0:75 move second child to first child (temp 3-component vector of double)
+0:75 'r41' (temp 3-component vector of double)
+0:75 Convert uint to double (temp 3-component vector of double)
+0:75 'u3' (uniform 3-component vector of uint)
+0:76 Sequence
+0:76 move second child to first child (temp 3-component vector of double)
+0:76 'r42' (temp 3-component vector of double)
+0:76 Convert float to double (temp 3-component vector of double)
+0:76 'f3' (uniform 3-component vector of float)
+0:77 Sequence
+0:77 move second child to first child (temp 3-component vector of double)
+0:77 'r43' (temp 3-component vector of double)
+0:77 Convert bool to double (temp 3-component vector of double)
+0:77 'b3' (uniform 3-component vector of bool)
+0:80 multiply second child into first child (temp 3-component vector of float)
+0:80 'r00' (temp 3-component vector of float)
+0:80 Convert int to float (temp 3-component vector of float)
+0:80 'i3' (uniform 3-component vector of int)
+0:81 multiply second child into first child (temp 3-component vector of float)
+0:81 'r01' (temp 3-component vector of float)
+0:81 Convert bool to float (temp 3-component vector of float)
+0:81 'b3' (uniform 3-component vector of bool)
+0:82 multiply second child into first child (temp 3-component vector of float)
+0:82 'r02' (temp 3-component vector of float)
+0:82 Convert uint to float (temp 3-component vector of float)
+0:82 'u3' (uniform 3-component vector of uint)
+0:83 multiply second child into first child (temp 3-component vector of float)
+0:83 'r03' (temp 3-component vector of float)
+0:83 Convert double to float (temp 3-component vector of float)
+0:83 'd3' (uniform 3-component vector of double)
+0:85 multiply second child into first child (temp 3-component vector of int)
+0:85 'r10' (temp 3-component vector of int)
+0:85 Convert bool to int (temp 3-component vector of int)
+0:85 'b3' (uniform 3-component vector of bool)
+0:86 multiply second child into first child (temp 3-component vector of int)
+0:86 'r11' (temp 3-component vector of int)
+0:86 Convert uint to int (temp 3-component vector of int)
+0:86 'u3' (uniform 3-component vector of uint)
+0:87 multiply second child into first child (temp 3-component vector of int)
+0:87 'r12' (temp 3-component vector of int)
+0:87 Convert float to int (temp 3-component vector of int)
+0:87 'f3' (uniform 3-component vector of float)
+0:88 multiply second child into first child (temp 3-component vector of int)
+0:88 'r13' (temp 3-component vector of int)
+0:88 Convert double to int (temp 3-component vector of int)
+0:88 'd3' (uniform 3-component vector of double)
+0:90 multiply second child into first child (temp 3-component vector of uint)
+0:90 'r20' (temp 3-component vector of uint)
+0:90 Convert bool to uint (temp 3-component vector of uint)
+0:90 'b3' (uniform 3-component vector of bool)
+0:91 multiply second child into first child (temp 3-component vector of uint)
+0:91 'r21' (temp 3-component vector of uint)
+0:91 Convert int to uint (temp 3-component vector of uint)
+0:91 'i3' (uniform 3-component vector of int)
+0:92 multiply second child into first child (temp 3-component vector of uint)
+0:92 'r22' (temp 3-component vector of uint)
+0:92 Convert float to uint (temp 3-component vector of uint)
+0:92 'f3' (uniform 3-component vector of float)
+0:93 multiply second child into first child (temp 3-component vector of uint)
+0:93 'r23' (temp 3-component vector of uint)
+0:93 Convert double to uint (temp 3-component vector of uint)
+0:93 'd3' (uniform 3-component vector of double)
+0:97 multiply second child into first child (temp 3-component vector of double)
+0:97 'r40' (temp 3-component vector of double)
+0:97 Convert int to double (temp 3-component vector of double)
+0:97 'i3' (uniform 3-component vector of int)
+0:98 multiply second child into first child (temp 3-component vector of double)
+0:98 'r41' (temp 3-component vector of double)
+0:98 Convert uint to double (temp 3-component vector of double)
+0:98 'u3' (uniform 3-component vector of uint)
+0:99 multiply second child into first child (temp 3-component vector of double)
+0:99 'r42' (temp 3-component vector of double)
+0:99 Convert float to double (temp 3-component vector of double)
+0:99 'f3' (uniform 3-component vector of float)
+0:100 multiply second child into first child (temp 3-component vector of double)
+0:100 'r43' (temp 3-component vector of double)
+0:100 Convert bool to double (temp 3-component vector of double)
+0:100 'b3' (uniform 3-component vector of bool)
+0:103 vector scale second child into first child (temp 3-component vector of float)
+0:103 'r00' (temp 3-component vector of float)
+0:103 Convert int to float (temp float)
+0:103 'is' (uniform int)
+0:104 vector scale second child into first child (temp 3-component vector of float)
+0:104 'r01' (temp 3-component vector of float)
+0:104 Convert bool to float (temp float)
+0:104 'bs' (uniform bool)
+0:105 vector scale second child into first child (temp 3-component vector of float)
+0:105 'r02' (temp 3-component vector of float)
+0:105 Convert uint to float (temp float)
+0:105 'us' (uniform uint)
+0:106 vector scale second child into first child (temp 3-component vector of float)
+0:106 'r03' (temp 3-component vector of float)
+0:106 Convert double to float (temp float)
+0:106 'ds' (uniform double)
+0:108 vector scale second child into first child (temp 3-component vector of int)
+0:108 'r10' (temp 3-component vector of int)
+0:108 Convert bool to int (temp int)
+0:108 'bs' (uniform bool)
+0:109 vector scale second child into first child (temp 3-component vector of int)
+0:109 'r11' (temp 3-component vector of int)
+0:109 Convert uint to int (temp int)
+0:109 'us' (uniform uint)
+0:110 vector scale second child into first child (temp 3-component vector of int)
+0:110 'r12' (temp 3-component vector of int)
+0:110 Convert float to int (temp int)
+0:110 'fs' (uniform float)
+0:111 vector scale second child into first child (temp 3-component vector of int)
+0:111 'r13' (temp 3-component vector of int)
+0:111 Convert double to int (temp int)
+0:111 'ds' (uniform double)
+0:113 vector scale second child into first child (temp 3-component vector of uint)
+0:113 'r20' (temp 3-component vector of uint)
+0:113 Convert bool to uint (temp uint)
+0:113 'bs' (uniform bool)
+0:114 vector scale second child into first child (temp 3-component vector of uint)
+0:114 'r21' (temp 3-component vector of uint)
+0:114 Convert int to uint (temp uint)
+0:114 'is' (uniform int)
+0:115 vector scale second child into first child (temp 3-component vector of uint)
+0:115 'r22' (temp 3-component vector of uint)
+0:115 Convert float to uint (temp uint)
+0:115 'fs' (uniform float)
+0:116 vector scale second child into first child (temp 3-component vector of uint)
+0:116 'r23' (temp 3-component vector of uint)
+0:116 Convert double to uint (temp uint)
+0:116 'ds' (uniform double)
+0:120 vector scale second child into first child (temp 3-component vector of double)
+0:120 'r40' (temp 3-component vector of double)
+0:120 Convert int to double (temp double)
+0:120 'is' (uniform int)
+0:121 vector scale second child into first child (temp 3-component vector of double)
+0:121 'r41' (temp 3-component vector of double)
+0:121 Convert uint to double (temp double)
+0:121 'us' (uniform uint)
+0:122 vector scale second child into first child (temp 3-component vector of double)
+0:122 'r42' (temp 3-component vector of double)
+0:122 Convert float to double (temp double)
+0:122 'fs' (uniform float)
+0:123 vector scale second child into first child (temp 3-component vector of double)
+0:123 'r43' (temp 3-component vector of double)
+0:123 Convert bool to double (temp double)
+0:123 'bs' (uniform bool)
+0:193 Sequence
+0:193 move second child to first child (temp int)
+0:193 'c1' (temp int)
+0:193 Constant:
+0:193 3 (const int)
+0:194 Sequence
+0:194 move second child to first child (temp int)
+0:194 'c2' (temp int)
+0:194 Constant:
+0:194 3 (const int)
+0:196 Sequence
+0:196 move second child to first child (temp 4-component vector of float)
+0:196 'outval' (temp 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:196 Constant:
+0:196 3.600000
+0:196 Constant:
+0:196 3.600000
+0:196 Convert int to float (temp float)
+0:196 'c1' (temp int)
+0:196 Convert int to float (temp float)
+0:196 'c2' (temp int)
+0:199 move second child to first child (temp 4-component vector of float)
+0:199 Color: direct index for structure (temp 4-component vector of float)
+0:199 'psout' (temp structure{temp 4-component vector of float Color})
+0:199 Constant:
+0:199 0 (const int)
+0:199 'outval' (temp 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:200 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:200 Color: direct index for structure (temp 4-component vector of float)
+0:200 'psout' (temp structure{temp 4-component vector of float Color})
+0:200 Constant:
+0:200 0 (const int)
+0:200 Branch: Return
+0:? Linker Objects
+0:? 'i3' (uniform 3-component vector of int)
+0:? 'b3' (uniform 3-component vector of bool)
+0:? 'f3' (uniform 3-component vector of float)
+0:? 'u3' (uniform 3-component vector of uint)
+0:? 'd3' (uniform 3-component vector of double)
+0:? 'is' (uniform int)
+0:? 'bs' (uniform bool)
+0:? 'fs' (uniform float)
+0:? 'us' (uniform uint)
+0:? 'ds' (uniform double)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 481
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 477
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 11 "Fn_F3(vf3;"
+ Name 10 "x"
+ Name 18 "Fn_I3(vi3;"
+ Name 17 "x"
+ Name 25 "Fn_U3(vu3;"
+ Name 24 "x"
+ Name 32 "Fn_B3(vb3;"
+ Name 31 "x"
+ Name 39 "Fn_D3(vd3;"
+ Name 38 "x"
+ Name 43 "Fn_R_F3I(vf3;"
+ Name 42 "p"
+ Name 46 "Fn_R_F3U(vf3;"
+ Name 45 "p"
+ Name 49 "Fn_R_F3B(vf3;"
+ Name 48 "p"
+ Name 52 "Fn_R_F3D(vf3;"
+ Name 51 "p"
+ Name 56 "Fn_R_I3U(vi3;"
+ Name 55 "p"
+ Name 59 "Fn_R_I3B(vi3;"
+ Name 58 "p"
+ Name 62 "Fn_R_I3F(vi3;"
+ Name 61 "p"
+ Name 65 "Fn_R_I3D(vi3;"
+ Name 64 "p"
+ Name 69 "Fn_R_U3I(vu3;"
+ Name 68 "p"
+ Name 72 "Fn_R_U3F(vu3;"
+ Name 71 "p"
+ Name 75 "Fn_R_U3B(vu3;"
+ Name 74 "p"
+ Name 78 "Fn_R_U3D(vu3;"
+ Name 77 "p"
+ Name 82 "Fn_R_B3I(vb3;"
+ Name 81 "p"
+ Name 85 "Fn_R_B3U(vb3;"
+ Name 84 "p"
+ Name 88 "Fn_R_B3F(vb3;"
+ Name 87 "p"
+ Name 91 "Fn_R_B3D(vb3;"
+ Name 90 "p"
+ Name 95 "Fn_R_D3I(vd3;"
+ Name 94 "p"
+ Name 98 "Fn_R_D3U(vd3;"
+ Name 97 "p"
+ Name 101 "Fn_R_D3B(vd3;"
+ Name 100 "p"
+ Name 104 "Fn_R_D3F(vd3;"
+ Name 103 "p"
+ Name 107 "i3"
+ Name 115 "u3"
+ Name 123 "b3"
+ Name 135 "d3"
+ Name 159 "f3"
+ Name 252 "r00"
+ Name 255 "r01"
+ Name 258 "r02"
+ Name 261 "r03"
+ Name 264 "r10"
+ Name 267 "r11"
+ Name 270 "r12"
+ Name 273 "r13"
+ Name 276 "r20"
+ Name 279 "r21"
+ Name 282 "r22"
+ Name 285 "r23"
+ Name 288 "r30"
+ Name 291 "r31"
+ Name 294 "r32"
+ Name 297 "r33"
+ Name 300 "r40"
+ Name 303 "r41"
+ Name 306 "r42"
+ Name 309 "r43"
+ Name 377 "is"
+ Name 383 "bs"
+ Name 389 "us"
+ Name 395 "ds"
+ Name 411 "fs"
+ Name 459 "c1"
+ Name 461 "c2"
+ Name 464 "outval"
+ Name 471 "PS_OUTPUT"
+ MemberName 471(PS_OUTPUT) 0 "Color"
+ Name 473 "psout"
+ Name 477 "Color"
+ Decorate 477(Color) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypePointer Function 7(fvec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeInt 32 1
+ 14: TypeVector 13(int) 3
+ 15: TypePointer Function 14(ivec3)
+ 16: TypeFunction 2 15(ptr)
+ 20: TypeInt 32 0
+ 21: TypeVector 20(int) 3
+ 22: TypePointer Function 21(ivec3)
+ 23: TypeFunction 2 22(ptr)
+ 27: TypeBool
+ 28: TypeVector 27(bool) 3
+ 29: TypePointer Function 28(bvec3)
+ 30: TypeFunction 2 29(ptr)
+ 34: TypeFloat 64
+ 35: TypeVector 34(float) 3
+ 36: TypePointer Function 35(fvec3)
+ 37: TypeFunction 2 36(ptr)
+ 41: TypeFunction 7(fvec3) 8(ptr)
+ 54: TypeFunction 14(ivec3) 15(ptr)
+ 67: TypeFunction 21(ivec3) 22(ptr)
+ 80: TypeFunction 28(bvec3) 29(ptr)
+ 93: TypeFunction 35(fvec3) 36(ptr)
+ 106: TypePointer UniformConstant 14(ivec3)
+ 107(i3): 106(ptr) Variable UniformConstant
+ 114: TypePointer UniformConstant 21(ivec3)
+ 115(u3): 114(ptr) Variable UniformConstant
+ 122: TypePointer UniformConstant 28(bvec3)
+ 123(b3): 122(ptr) Variable UniformConstant
+ 125: 6(float) Constant 0
+ 126: 6(float) Constant 1065353216
+ 127: 7(fvec3) ConstantComposite 125 125 125
+ 128: 7(fvec3) ConstantComposite 126 126 126
+ 134: TypePointer UniformConstant 35(fvec3)
+ 135(d3): 134(ptr) Variable UniformConstant
+ 149: 13(int) Constant 0
+ 150: 13(int) Constant 1
+ 151: 14(ivec3) ConstantComposite 149 149 149
+ 152: 14(ivec3) ConstantComposite 150 150 150
+ 158: TypePointer UniformConstant 7(fvec3)
+ 159(f3): 158(ptr) Variable UniformConstant
+ 185: 20(int) Constant 0
+ 186: 20(int) Constant 1
+ 187: 21(ivec3) ConstantComposite 185 185 185
+ 188: 21(ivec3) ConstantComposite 186 186 186
+ 219: 34(float) Constant 0 0
+ 220: 35(fvec3) ConstantComposite 219 219 219
+ 239: 34(float) Constant 0 1072693248
+ 240: 35(fvec3) ConstantComposite 239 239 239
+ 376: TypePointer UniformConstant 13(int)
+ 377(is): 376(ptr) Variable UniformConstant
+ 382: TypePointer UniformConstant 27(bool)
+ 383(bs): 382(ptr) Variable UniformConstant
+ 388: TypePointer UniformConstant 20(int)
+ 389(us): 388(ptr) Variable UniformConstant
+ 394: TypePointer UniformConstant 34(float)
+ 395(ds): 394(ptr) Variable UniformConstant
+ 410: TypePointer UniformConstant 6(float)
+ 411(fs): 410(ptr) Variable UniformConstant
+ 458: TypePointer Function 13(int)
+ 460: 13(int) Constant 3
+ 462: TypeVector 6(float) 4
+ 463: TypePointer Function 462(fvec4)
+ 465: 6(float) Constant 1080452710
+ 471(PS_OUTPUT): TypeStruct 462(fvec4)
+ 472: TypePointer Function 471(PS_OUTPUT)
+ 476: TypePointer Output 462(fvec4)
+ 477(Color): 476(ptr) Variable Output
+ 4(main): 2 Function None 3
+ 5: Label
+ 252(r00): 8(ptr) Variable Function
+ 255(r01): 8(ptr) Variable Function
+ 258(r02): 8(ptr) Variable Function
+ 261(r03): 8(ptr) Variable Function
+ 264(r10): 15(ptr) Variable Function
+ 267(r11): 15(ptr) Variable Function
+ 270(r12): 15(ptr) Variable Function
+ 273(r13): 15(ptr) Variable Function
+ 276(r20): 22(ptr) Variable Function
+ 279(r21): 22(ptr) Variable Function
+ 282(r22): 22(ptr) Variable Function
+ 285(r23): 22(ptr) Variable Function
+ 288(r30): 29(ptr) Variable Function
+ 291(r31): 29(ptr) Variable Function
+ 294(r32): 29(ptr) Variable Function
+ 297(r33): 29(ptr) Variable Function
+ 300(r40): 36(ptr) Variable Function
+ 303(r41): 36(ptr) Variable Function
+ 306(r42): 36(ptr) Variable Function
+ 309(r43): 36(ptr) Variable Function
+ 459(c1): 458(ptr) Variable Function
+ 461(c2): 458(ptr) Variable Function
+ 464(outval): 463(ptr) Variable Function
+ 473(psout): 472(ptr) Variable Function
+ 253: 14(ivec3) Load 107(i3)
+ 254: 7(fvec3) ConvertSToF 253
+ Store 252(r00) 254
+ 256: 28(bvec3) Load 123(b3)
+ 257: 7(fvec3) Select 256 128 127
+ Store 255(r01) 257
+ 259: 21(ivec3) Load 115(u3)
+ 260: 7(fvec3) ConvertUToF 259
+ Store 258(r02) 260
+ 262: 35(fvec3) Load 135(d3)
+ 263: 7(fvec3) FConvert 262
+ Store 261(r03) 263
+ 265: 28(bvec3) Load 123(b3)
+ 266: 14(ivec3) Select 265 152 151
+ Store 264(r10) 266
+ 268: 21(ivec3) Load 115(u3)
+ 269: 14(ivec3) Bitcast 268
+ Store 267(r11) 269
+ 271: 7(fvec3) Load 159(f3)
+ 272: 14(ivec3) ConvertFToS 271
+ Store 270(r12) 272
+ 274: 35(fvec3) Load 135(d3)
+ 275: 14(ivec3) ConvertFToS 274
+ Store 273(r13) 275
+ 277: 28(bvec3) Load 123(b3)
+ 278: 21(ivec3) Select 277 188 187
+ Store 276(r20) 278
+ 280: 14(ivec3) Load 107(i3)
+ 281: 21(ivec3) Bitcast 280
+ Store 279(r21) 281
+ 283: 7(fvec3) Load 159(f3)
+ 284: 21(ivec3) ConvertFToU 283
+ Store 282(r22) 284
+ 286: 35(fvec3) Load 135(d3)
+ 287: 21(ivec3) ConvertFToU 286
+ Store 285(r23) 287
+ 289: 14(ivec3) Load 107(i3)
+ 290: 28(bvec3) INotEqual 289 187
+ Store 288(r30) 290
+ 292: 21(ivec3) Load 115(u3)
+ 293: 28(bvec3) INotEqual 292 187
+ Store 291(r31) 293
+ 295: 7(fvec3) Load 159(f3)
+ 296: 28(bvec3) FOrdNotEqual 295 127
+ Store 294(r32) 296
+ 298: 35(fvec3) Load 135(d3)
+ 299: 28(bvec3) FOrdNotEqual 298 220
+ Store 297(r33) 299
+ 301: 14(ivec3) Load 107(i3)
+ 302: 35(fvec3) ConvertSToF 301
+ Store 300(r40) 302
+ 304: 21(ivec3) Load 115(u3)
+ 305: 35(fvec3) ConvertUToF 304
+ Store 303(r41) 305
+ 307: 7(fvec3) Load 159(f3)
+ 308: 35(fvec3) FConvert 307
+ Store 306(r42) 308
+ 310: 28(bvec3) Load 123(b3)
+ 311: 35(fvec3) Select 310 240 220
+ Store 309(r43) 311
+ 312: 14(ivec3) Load 107(i3)
+ 313: 7(fvec3) ConvertSToF 312
+ 314: 7(fvec3) Load 252(r00)
+ 315: 7(fvec3) FMul 314 313
+ Store 252(r00) 315
+ 316: 28(bvec3) Load 123(b3)
+ 317: 7(fvec3) Select 316 128 127
+ 318: 7(fvec3) Load 255(r01)
+ 319: 7(fvec3) FMul 318 317
+ Store 255(r01) 319
+ 320: 21(ivec3) Load 115(u3)
+ 321: 7(fvec3) ConvertUToF 320
+ 322: 7(fvec3) Load 258(r02)
+ 323: 7(fvec3) FMul 322 321
+ Store 258(r02) 323
+ 324: 35(fvec3) Load 135(d3)
+ 325: 7(fvec3) FConvert 324
+ 326: 7(fvec3) Load 261(r03)
+ 327: 7(fvec3) FMul 326 325
+ Store 261(r03) 327
+ 328: 28(bvec3) Load 123(b3)
+ 329: 14(ivec3) Select 328 152 151
+ 330: 14(ivec3) Load 264(r10)
+ 331: 14(ivec3) IMul 330 329
+ Store 264(r10) 331
+ 332: 21(ivec3) Load 115(u3)
+ 333: 14(ivec3) Bitcast 332
+ 334: 14(ivec3) Load 267(r11)
+ 335: 14(ivec3) IMul 334 333
+ Store 267(r11) 335
+ 336: 7(fvec3) Load 159(f3)
+ 337: 14(ivec3) ConvertFToS 336
+ 338: 14(ivec3) Load 270(r12)
+ 339: 14(ivec3) IMul 338 337
+ Store 270(r12) 339
+ 340: 35(fvec3) Load 135(d3)
+ 341: 14(ivec3) ConvertFToS 340
+ 342: 14(ivec3) Load 273(r13)
+ 343: 14(ivec3) IMul 342 341
+ Store 273(r13) 343
+ 344: 28(bvec3) Load 123(b3)
+ 345: 21(ivec3) Select 344 188 187
+ 346: 21(ivec3) Load 276(r20)
+ 347: 21(ivec3) IMul 346 345
+ Store 276(r20) 347
+ 348: 14(ivec3) Load 107(i3)
+ 349: 21(ivec3) Bitcast 348
+ 350: 21(ivec3) Load 279(r21)
+ 351: 21(ivec3) IMul 350 349
+ Store 279(r21) 351
+ 352: 7(fvec3) Load 159(f3)
+ 353: 21(ivec3) ConvertFToU 352
+ 354: 21(ivec3) Load 282(r22)
+ 355: 21(ivec3) IMul 354 353
+ Store 282(r22) 355
+ 356: 35(fvec3) Load 135(d3)
+ 357: 21(ivec3) ConvertFToU 356
+ 358: 21(ivec3) Load 285(r23)
+ 359: 21(ivec3) IMul 358 357
+ Store 285(r23) 359
+ 360: 14(ivec3) Load 107(i3)
+ 361: 35(fvec3) ConvertSToF 360
+ 362: 35(fvec3) Load 300(r40)
+ 363: 35(fvec3) FMul 362 361
+ Store 300(r40) 363
+ 364: 21(ivec3) Load 115(u3)
+ 365: 35(fvec3) ConvertUToF 364
+ 366: 35(fvec3) Load 303(r41)
+ 367: 35(fvec3) FMul 366 365
+ Store 303(r41) 367
+ 368: 7(fvec3) Load 159(f3)
+ 369: 35(fvec3) FConvert 368
+ 370: 35(fvec3) Load 306(r42)
+ 371: 35(fvec3) FMul 370 369
+ Store 306(r42) 371
+ 372: 28(bvec3) Load 123(b3)
+ 373: 35(fvec3) Select 372 240 220
+ 374: 35(fvec3) Load 309(r43)
+ 375: 35(fvec3) FMul 374 373
+ Store 309(r43) 375
+ 378: 13(int) Load 377(is)
+ 379: 6(float) ConvertSToF 378
+ 380: 7(fvec3) Load 252(r00)
+ 381: 7(fvec3) VectorTimesScalar 380 379
+ Store 252(r00) 381
+ 384: 27(bool) Load 383(bs)
+ 385: 6(float) Select 384 126 125
+ 386: 7(fvec3) Load 255(r01)
+ 387: 7(fvec3) VectorTimesScalar 386 385
+ Store 255(r01) 387
+ 390: 20(int) Load 389(us)
+ 391: 6(float) ConvertUToF 390
+ 392: 7(fvec3) Load 258(r02)
+ 393: 7(fvec3) VectorTimesScalar 392 391
+ Store 258(r02) 393
+ 396: 34(float) Load 395(ds)
+ 397: 6(float) FConvert 396
+ 398: 7(fvec3) Load 261(r03)
+ 399: 7(fvec3) VectorTimesScalar 398 397
+ Store 261(r03) 399
+ 400: 27(bool) Load 383(bs)
+ 401: 13(int) Select 400 150 149
+ 402: 14(ivec3) Load 264(r10)
+ 403: 14(ivec3) CompositeConstruct 401 401 401
+ 404: 14(ivec3) IMul 402 403
+ Store 264(r10) 404
+ 405: 20(int) Load 389(us)
+ 406: 13(int) Bitcast 405
+ 407: 14(ivec3) Load 267(r11)
+ 408: 14(ivec3) CompositeConstruct 406 406 406
+ 409: 14(ivec3) IMul 407 408
+ Store 267(r11) 409
+ 412: 6(float) Load 411(fs)
+ 413: 13(int) ConvertFToS 412
+ 414: 14(ivec3) Load 270(r12)
+ 415: 14(ivec3) CompositeConstruct 413 413 413
+ 416: 14(ivec3) IMul 414 415
+ Store 270(r12) 416
+ 417: 34(float) Load 395(ds)
+ 418: 13(int) ConvertFToS 417
+ 419: 14(ivec3) Load 273(r13)
+ 420: 14(ivec3) CompositeConstruct 418 418 418
+ 421: 14(ivec3) IMul 419 420
+ Store 273(r13) 421
+ 422: 27(bool) Load 383(bs)
+ 423: 20(int) Select 422 186 185
+ 424: 21(ivec3) Load 276(r20)
+ 425: 21(ivec3) CompositeConstruct 423 423 423
+ 426: 21(ivec3) IMul 424 425
+ Store 276(r20) 426
+ 427: 13(int) Load 377(is)
+ 428: 20(int) Bitcast 427
+ 429: 21(ivec3) Load 279(r21)
+ 430: 21(ivec3) CompositeConstruct 428 428 428
+ 431: 21(ivec3) IMul 429 430
+ Store 279(r21) 431
+ 432: 6(float) Load 411(fs)
+ 433: 20(int) ConvertFToU 432
+ 434: 21(ivec3) Load 282(r22)
+ 435: 21(ivec3) CompositeConstruct 433 433 433
+ 436: 21(ivec3) IMul 434 435
+ Store 282(r22) 436
+ 437: 34(float) Load 395(ds)
+ 438: 20(int) ConvertFToU 437
+ 439: 21(ivec3) Load 285(r23)
+ 440: 21(ivec3) CompositeConstruct 438 438 438
+ 441: 21(ivec3) IMul 439 440
+ Store 285(r23) 441
+ 442: 13(int) Load 377(is)
+ 443: 34(float) ConvertSToF 442
+ 444: 35(fvec3) Load 300(r40)
+ 445: 35(fvec3) VectorTimesScalar 444 443
+ Store 300(r40) 445
+ 446: 20(int) Load 389(us)
+ 447: 34(float) ConvertUToF 446
+ 448: 35(fvec3) Load 303(r41)
+ 449: 35(fvec3) VectorTimesScalar 448 447
+ Store 303(r41) 449
+ 450: 6(float) Load 411(fs)
+ 451: 34(float) FConvert 450
+ 452: 35(fvec3) Load 306(r42)
+ 453: 35(fvec3) VectorTimesScalar 452 451
+ Store 306(r42) 453
+ 454: 27(bool) Load 383(bs)
+ 455: 34(float) Select 454 239 219
+ 456: 35(fvec3) Load 309(r43)
+ 457: 35(fvec3) VectorTimesScalar 456 455
+ Store 309(r43) 457
+ Store 459(c1) 460
+ Store 461(c2) 460
+ 466: 13(int) Load 459(c1)
+ 467: 6(float) ConvertSToF 466
+ 468: 13(int) Load 461(c2)
+ 469: 6(float) ConvertSToF 468
+ 470: 462(fvec4) CompositeConstruct 465 465 467 469
+ Store 464(outval) 470
+ 474: 462(fvec4) Load 464(outval)
+ 475: 463(ptr) AccessChain 473(psout) 149
+ Store 475 474
+ 478: 463(ptr) AccessChain 473(psout) 149
+ 479: 462(fvec4) Load 478
+ Store 477(Color) 479
+ Return
+ FunctionEnd
+ 11(Fn_F3(vf3;): 2 Function None 9
+ 10(x): 8(ptr) FunctionParameter
+ 12: Label
+ Return
+ FunctionEnd
+ 18(Fn_I3(vi3;): 2 Function None 16
+ 17(x): 15(ptr) FunctionParameter
+ 19: Label
+ Return
+ FunctionEnd
+ 25(Fn_U3(vu3;): 2 Function None 23
+ 24(x): 22(ptr) FunctionParameter
+ 26: Label
+ Return
+ FunctionEnd
+ 32(Fn_B3(vb3;): 2 Function None 30
+ 31(x): 29(ptr) FunctionParameter
+ 33: Label
+ Return
+ FunctionEnd
+ 39(Fn_D3(vd3;): 2 Function None 37
+ 38(x): 36(ptr) FunctionParameter
+ 40: Label
+ Return
+ FunctionEnd
+43(Fn_R_F3I(vf3;): 7(fvec3) Function None 41
+ 42(p): 8(ptr) FunctionParameter
+ 44: Label
+ 108: 14(ivec3) Load 107(i3)
+ 109: 7(fvec3) ConvertSToF 108
+ Store 42(p) 109
+ 110: 14(ivec3) Load 107(i3)
+ 111: 7(fvec3) ConvertSToF 110
+ ReturnValue 111
+ FunctionEnd
+46(Fn_R_F3U(vf3;): 7(fvec3) Function None 41
+ 45(p): 8(ptr) FunctionParameter
+ 47: Label
+ 116: 21(ivec3) Load 115(u3)
+ 117: 7(fvec3) ConvertUToF 116
+ Store 45(p) 117
+ 118: 21(ivec3) Load 115(u3)
+ 119: 7(fvec3) ConvertUToF 118
+ ReturnValue 119
+ FunctionEnd
+49(Fn_R_F3B(vf3;): 7(fvec3) Function None 41
+ 48(p): 8(ptr) FunctionParameter
+ 50: Label
+ 124: 28(bvec3) Load 123(b3)
+ 129: 7(fvec3) Select 124 128 127
+ Store 48(p) 129
+ 130: 28(bvec3) Load 123(b3)
+ 131: 7(fvec3) Select 130 128 127
+ ReturnValue 131
+ FunctionEnd
+52(Fn_R_F3D(vf3;): 7(fvec3) Function None 41
+ 51(p): 8(ptr) FunctionParameter
+ 53: Label
+ 136: 35(fvec3) Load 135(d3)
+ 137: 7(fvec3) FConvert 136
+ Store 51(p) 137
+ 138: 35(fvec3) Load 135(d3)
+ 139: 7(fvec3) FConvert 138
+ ReturnValue 139
+ FunctionEnd
+56(Fn_R_I3U(vi3;): 14(ivec3) Function None 54
+ 55(p): 15(ptr) FunctionParameter
+ 57: Label
+ 142: 21(ivec3) Load 115(u3)
+ 143: 14(ivec3) Bitcast 142
+ Store 55(p) 143
+ 144: 21(ivec3) Load 115(u3)
+ 145: 14(ivec3) Bitcast 144
+ ReturnValue 145
+ FunctionEnd
+59(Fn_R_I3B(vi3;): 14(ivec3) Function None 54
+ 58(p): 15(ptr) FunctionParameter
+ 60: Label
+ 148: 28(bvec3) Load 123(b3)
+ 153: 14(ivec3) Select 148 152 151
+ Store 58(p) 153
+ 154: 28(bvec3) Load 123(b3)
+ 155: 14(ivec3) Select 154 152 151
+ ReturnValue 155
+ FunctionEnd
+62(Fn_R_I3F(vi3;): 14(ivec3) Function None 54
+ 61(p): 15(ptr) FunctionParameter
+ 63: Label
+ 160: 7(fvec3) Load 159(f3)
+ 161: 14(ivec3) ConvertFToS 160
+ Store 61(p) 161
+ 162: 7(fvec3) Load 159(f3)
+ 163: 14(ivec3) ConvertFToS 162
+ ReturnValue 163
+ FunctionEnd
+65(Fn_R_I3D(vi3;): 14(ivec3) Function None 54
+ 64(p): 15(ptr) FunctionParameter
+ 66: Label
+ 166: 35(fvec3) Load 135(d3)
+ 167: 14(ivec3) ConvertFToS 166
+ Store 64(p) 167
+ 168: 35(fvec3) Load 135(d3)
+ 169: 14(ivec3) ConvertFToS 168
+ ReturnValue 169
+ FunctionEnd
+69(Fn_R_U3I(vu3;): 21(ivec3) Function None 67
+ 68(p): 22(ptr) FunctionParameter
+ 70: Label
+ 172: 14(ivec3) Load 107(i3)
+ 173: 21(ivec3) Bitcast 172
+ Store 68(p) 173
+ 174: 14(ivec3) Load 107(i3)
+ 175: 21(ivec3) Bitcast 174
+ ReturnValue 175
+ FunctionEnd
+72(Fn_R_U3F(vu3;): 21(ivec3) Function None 67
+ 71(p): 22(ptr) FunctionParameter
+ 73: Label
+ 178: 7(fvec3) Load 159(f3)
+ 179: 21(ivec3) ConvertFToU 178
+ Store 71(p) 179
+ 180: 7(fvec3) Load 159(f3)
+ 181: 21(ivec3) ConvertFToU 180
+ ReturnValue 181
+ FunctionEnd
+75(Fn_R_U3B(vu3;): 21(ivec3) Function None 67
+ 74(p): 22(ptr) FunctionParameter
+ 76: Label
+ 184: 28(bvec3) Load 123(b3)
+ 189: 21(ivec3) Select 184 188 187
+ Store 74(p) 189
+ 190: 28(bvec3) Load 123(b3)
+ 191: 21(ivec3) Select 190 188 187
+ ReturnValue 191
+ FunctionEnd
+78(Fn_R_U3D(vu3;): 21(ivec3) Function None 67
+ 77(p): 22(ptr) FunctionParameter
+ 79: Label
+ 194: 35(fvec3) Load 135(d3)
+ 195: 21(ivec3) ConvertFToU 194
+ Store 77(p) 195
+ 196: 35(fvec3) Load 135(d3)
+ 197: 21(ivec3) ConvertFToU 196
+ ReturnValue 197
+ FunctionEnd
+82(Fn_R_B3I(vb3;): 28(bvec3) Function None 80
+ 81(p): 29(ptr) FunctionParameter
+ 83: Label
+ 200: 14(ivec3) Load 107(i3)
+ 201: 28(bvec3) INotEqual 200 187
+ Store 81(p) 201
+ 202: 14(ivec3) Load 107(i3)
+ 203: 28(bvec3) INotEqual 202 187
+ ReturnValue 203
+ FunctionEnd
+85(Fn_R_B3U(vb3;): 28(bvec3) Function None 80
+ 84(p): 29(ptr) FunctionParameter
+ 86: Label
+ 206: 21(ivec3) Load 115(u3)
+ 207: 28(bvec3) INotEqual 206 187
+ Store 84(p) 207
+ 208: 21(ivec3) Load 115(u3)
+ 209: 28(bvec3) INotEqual 208 187
+ ReturnValue 209
+ FunctionEnd
+88(Fn_R_B3F(vb3;): 28(bvec3) Function None 80
+ 87(p): 29(ptr) FunctionParameter
+ 89: Label
+ 212: 7(fvec3) Load 159(f3)
+ 213: 28(bvec3) FOrdNotEqual 212 127
+ Store 87(p) 213
+ 214: 7(fvec3) Load 159(f3)
+ 215: 28(bvec3) FOrdNotEqual 214 127
+ ReturnValue 215
+ FunctionEnd
+91(Fn_R_B3D(vb3;): 28(bvec3) Function None 80
+ 90(p): 29(ptr) FunctionParameter
+ 92: Label
+ 218: 35(fvec3) Load 135(d3)
+ 221: 28(bvec3) FOrdNotEqual 218 220
+ Store 90(p) 221
+ 222: 35(fvec3) Load 135(d3)
+ 223: 28(bvec3) FOrdNotEqual 222 220
+ ReturnValue 223
+ FunctionEnd
+95(Fn_R_D3I(vd3;): 35(fvec3) Function None 93
+ 94(p): 36(ptr) FunctionParameter
+ 96: Label
+ 226: 14(ivec3) Load 107(i3)
+ 227: 35(fvec3) ConvertSToF 226
+ Store 94(p) 227
+ 228: 14(ivec3) Load 107(i3)
+ 229: 35(fvec3) ConvertSToF 228
+ ReturnValue 229
+ FunctionEnd
+98(Fn_R_D3U(vd3;): 35(fvec3) Function None 93
+ 97(p): 36(ptr) FunctionParameter
+ 99: Label
+ 232: 21(ivec3) Load 115(u3)
+ 233: 35(fvec3) ConvertUToF 232
+ Store 97(p) 233
+ 234: 21(ivec3) Load 115(u3)
+ 235: 35(fvec3) ConvertUToF 234
+ ReturnValue 235
+ FunctionEnd
+101(Fn_R_D3B(vd3;): 35(fvec3) Function None 93
+ 100(p): 36(ptr) FunctionParameter
+ 102: Label
+ 238: 28(bvec3) Load 123(b3)
+ 241: 35(fvec3) Select 238 240 220
+ Store 100(p) 241
+ 242: 28(bvec3) Load 123(b3)
+ 243: 35(fvec3) Select 242 240 220
+ ReturnValue 243
+ FunctionEnd
+104(Fn_R_D3F(vd3;): 35(fvec3) Function None 93
+ 103(p): 36(ptr) FunctionParameter
+ 105: Label
+ 246: 7(fvec3) Load 159(f3)
+ 247: 35(fvec3) FConvert 246
+ Store 103(p) 247
+ 248: 7(fvec3) Load 159(f3)
+ 249: 35(fvec3) FConvert 248
+ ReturnValue 249
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out
new file mode 100644
index 0000000..b97de15
--- /dev/null
+++ b/Test/baseResults/hlsl.reflection.vert.out
@@ -0,0 +1,84 @@
+hlsl.reflection.vert
+
+Linked vertex stage:
+
+
+Uniform reflection:
+anonMember3: offset 96, type 8b52, size 1, index 0
+s.a: offset -1, type 1404, size 1, index -1
+scalar: offset 12, type 1404, size 1, index 0
+m23: offset 16, type 8b67, size 1, index 0
+scalarAfterm23: offset 64, type 1404, size 1, index 0
+c_m23: offset 16, type 8b67, size 1, index 0
+c_scalarAfterm23: offset 64, type 1404, size 1, index 0
+scalarBeforeArray: offset 112, type 1404, size 1, index 0
+floatArray: offset 128, type 1406, size 5, index 0
+scalarAfterArray: offset 208, type 1404, size 1, index 0
+memfloat2: offset 48, type 8b50, size 1, index 0
+memf1: offset 56, type 1406, size 1, index 0
+memf2: offset 60, type 8b56, size 1, index 0
+memf3: offset 64, type 1404, size 1, index 0
+memfloat2a: offset 72, type 8b50, size 1, index 0
+m22: offset 80, type 8b5a, size 7, index 0
+dm22: offset -1, type 8b5a, size 4, index -1
+foo.n1.a: offset 0, type 1406, size 1, index 0
+foo.n2.b: offset 16, type 1406, size 1, index 0
+foo.n2.c: offset 20, type 1406, size 1, index 0
+foo.n2.d: offset 24, type 1406, size 1, index 0
+deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
+deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
+deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1
+deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1
+deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
+deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1
+deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1
+deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1
+deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1
+deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1
+deepC[1].iv4: offset -1, type 8b52, size 1, index -1
+deepC[1].d2.i: offset -1, type 1404, size 1, index -1
+deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
+deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
+deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
+deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
+deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
+deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
+deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
+deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
+deepC[1].v3: offset -1, type 8b54, size 1, index -1
+deepD[0].iv4: offset -1, type 8b52, size 1, index -1
+deepD[0].d2.i: offset -1, type 1404, size 1, index -1
+deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
+deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
+deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
+deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
+deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
+deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
+deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
+deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
+deepD[0].v3: offset -1, type 8b54, size 1, index -1
+deepD[1].iv4: offset -1, type 8b52, size 1, index -1
+deepD[1].d2.i: offset -1, type 1404, size 1, index -1
+deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1
+deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1
+deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1
+deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1
+deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1
+deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1
+deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1
+deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1
+deepD[1].v3: offset -1, type 8b54, size 1, index -1
+foo: offset 0, type 1406, size 1, index 0
+anonMember1: offset 0, type 8b51, size 1, index 0
+uf1: offset -1, type 1406, size 1, index -1
+
+Uniform block reflection:
+: offset -1, type ffffffff, size 512, index -1
+
+Vertex attribute reflection:
+attributeFloat: offset 0, type 1406, size 0, index 0
+attributeFloat2: offset 0, type 8b50, size 0, index 0
+attributeFloat3: offset 0, type 8b51, size 0, index 0
+attributeFloat4: offset 0, type 8b52, size 0, index 0
+attributeMat4: offset 0, type 8b5c, size 0, index 0
+
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 6336cfa..54c3553 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -106,7 +106,7 @@
0:? 1.000000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -115,14 +115,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -135,6 +148,8 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -143,7 +158,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -247,7 +262,7 @@
0:? 1.000000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -256,14 +271,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -276,19 +304,20 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 132
+// Id's are bound by 139
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 130 134
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -313,7 +342,9 @@
MemberName 120(PS_OUTPUT) 0 "Color"
MemberName 120(PS_OUTPUT) 1 "Depth"
Name 122 "psout"
- Name 131 "g_tTex1df4a"
+ Name 130 "Color"
+ Name 134 "Depth"
+ Name 138 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -326,9 +357,10 @@
Decorate 90(g_tTexcdf4) DescriptorSet 0
Decorate 100(g_tTexcdi4) DescriptorSet 0
Decorate 110(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 120(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 131(g_tTex1df4a) DescriptorSet 0
- Decorate 131(g_tTex1df4a) Binding 1
+ Decorate 130(Color) Location 0
+ Decorate 134(Depth) BuiltIn FragDepth
+ Decorate 138(g_tTex1df4a) DescriptorSet 0
+ Decorate 138(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -406,7 +438,11 @@
124: 7(fvec4) ConstantComposite 117 117 117 117
126: 25(int) Constant 1
127: TypePointer Function 6(float)
-131(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 129: TypePointer Output 7(fvec4)
+ 130(Color): 129(ptr) Variable Output
+ 133: TypePointer Output 6(float)
+ 134(Depth): 133(ptr) Variable Output
+138(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -468,6 +504,11 @@
Store 125 124
128: 127(ptr) AccessChain 122(psout) 126
Store 128 117
- 129:120(PS_OUTPUT) Load 122(psout)
- ReturnValue 129
+ 131: 8(ptr) AccessChain 122(psout) 123
+ 132: 7(fvec4) Load 131
+ Store 130(Color) 132
+ 135: 127(ptr) AccessChain 122(psout) 126
+ 136: 6(float) Load 135
+ Store 134(Depth) 136
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index feb6461..dca7f77 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -4,7 +4,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:91 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:53 Function Parameters:
0:? Sequence
0:57 move second child to first child (temp int)
@@ -216,7 +216,7 @@
0:? 0.900000
0:86 move second child to first child (temp 4-component vector of float)
0:86 Color: direct index for structure (temp 4-component vector of float)
-0:86 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:86 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:86 Constant:
0:86 0 (const int)
0:86 Constant:
@@ -225,14 +225,27 @@
0:86 1.000000
0:86 1.000000
0:87 move second child to first child (temp float)
-0:87 Depth: direct index for structure (temp float FragDepth)
-0:87 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:87 Depth: direct index for structure (temp float)
+0:87 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:87 Constant:
0:87 1 (const int)
0:87 Constant:
0:87 1.000000
-0:89 Branch: Return with expression
-0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:89 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:89 Color: direct index for structure (temp 4-component vector of float)
+0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:89 Constant:
+0:89 0 (const int)
+0:89 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:89 Depth: direct index for structure (temp float)
+0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:89 Constant:
+0:89 1 (const int)
+0:89 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -250,6 +263,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -258,7 +273,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:91 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:53 Function Parameters:
0:? Sequence
0:57 move second child to first child (temp int)
@@ -470,7 +485,7 @@
0:? 0.900000
0:86 move second child to first child (temp 4-component vector of float)
0:86 Color: direct index for structure (temp 4-component vector of float)
-0:86 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:86 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:86 Constant:
0:86 0 (const int)
0:86 Constant:
@@ -479,14 +494,27 @@
0:86 1.000000
0:86 1.000000
0:87 move second child to first child (temp float)
-0:87 Depth: direct index for structure (temp float FragDepth)
-0:87 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:87 Depth: direct index for structure (temp float)
+0:87 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:87 Constant:
0:87 1 (const int)
0:87 Constant:
0:87 1.000000
-0:89 Branch: Return with expression
-0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:89 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:89 Color: direct index for structure (temp 4-component vector of float)
+0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:89 Constant:
+0:89 0 (const int)
+0:89 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:89 Depth: direct index for structure (temp float)
+0:89 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:89 Constant:
+0:89 1 (const int)
+0:89 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -504,18 +532,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 184
+// Id's are bound by 191
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 180 184
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 7 "MemberTest"
MemberName 7(MemberTest) 0 "Sample"
@@ -560,9 +589,11 @@
MemberName 171(PS_OUTPUT) 0 "Color"
MemberName 171(PS_OUTPUT) 1 "Depth"
Name 173 "psout"
- Name 181 "g_sSamp2d"
- Name 182 "g_sSamp2D_b"
- Name 183 "g_tTex1df4a"
+ Name 180 "Color"
+ Name 184 "Depth"
+ Name 188 "g_sSamp2d"
+ Name 189 "g_sSamp2D_b"
+ Name 190 "g_tTex1df4a"
Decorate 41(g_tTex1df4) DescriptorSet 0
Decorate 41(g_tTex1df4) Binding 0
Decorate 45(g_sSamp) DescriptorSet 0
@@ -578,11 +609,12 @@
Decorate 147(g_tTexcdf4) DescriptorSet 0
Decorate 156(g_tTexcdi4) DescriptorSet 0
Decorate 165(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 171(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 181(g_sSamp2d) DescriptorSet 0
- Decorate 182(g_sSamp2D_b) DescriptorSet 0
- Decorate 183(g_tTex1df4a) DescriptorSet 0
- Decorate 183(g_tTex1df4a) Binding 1
+ Decorate 180(Color) Location 0
+ Decorate 184(Depth) BuiltIn FragDepth
+ Decorate 188(g_sSamp2d) DescriptorSet 0
+ Decorate 189(g_sSamp2D_b) DescriptorSet 0
+ Decorate 190(g_tTex1df4a) DescriptorSet 0
+ Decorate 190(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -682,9 +714,13 @@
174: 35(float) Constant 1065353216
175: 36(fvec4) ConstantComposite 174 174 174 174
177: TypePointer Function 35(float)
- 181(g_sSamp2d): 44(ptr) Variable UniformConstant
-182(g_sSamp2D_b): 44(ptr) Variable UniformConstant
-183(g_tTex1df4a): 40(ptr) Variable UniformConstant
+ 179: TypePointer Output 36(fvec4)
+ 180(Color): 179(ptr) Variable Output
+ 183: TypePointer Output 35(float)
+ 184(Depth): 183(ptr) Variable Output
+ 188(g_sSamp2d): 44(ptr) Variable UniformConstant
+189(g_sSamp2D_b): 44(ptr) Variable UniformConstant
+190(g_tTex1df4a): 40(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(mtest): 8(ptr) Variable Function
@@ -789,6 +825,11 @@
Store 176 175
178: 177(ptr) AccessChain 173(psout) 10
Store 178 174
- 179:171(PS_OUTPUT) Load 173(psout)
- ReturnValue 179
+ 181: 37(ptr) AccessChain 173(psout) 23
+ 182: 36(fvec4) Load 181
+ Store 180(Color) 182
+ 185: 177(ptr) AccessChain 173(psout) 10
+ 186: 35(float) Load 185
+ Store 184(Depth) 186
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index ce20777..b8c7d5c 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -124,7 +124,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -133,14 +133,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -156,6 +169,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -164,7 +179,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -286,7 +301,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -295,14 +310,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -318,18 +346,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 147
+// Id's are bound by 154
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 136 140
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -354,10 +383,12 @@
MemberName 127(PS_OUTPUT) 0 "Color"
MemberName 127(PS_OUTPUT) 1 "Depth"
Name 129 "psout"
- Name 137 "g_tTex1df4a"
- Name 140 "g_tTexcdf4"
- Name 143 "g_tTexcdi4"
- Name 146 "g_tTexcdu4"
+ Name 136 "Color"
+ Name 140 "Depth"
+ Name 144 "g_tTex1df4a"
+ Name 147 "g_tTexcdf4"
+ Name 150 "g_tTexcdi4"
+ Name 153 "g_tTexcdu4"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -370,12 +401,13 @@
Decorate 92(g_tTex3df4) DescriptorSet 0
Decorate 105(g_tTex3di4) DescriptorSet 0
Decorate 116(g_tTex3du4) DescriptorSet 0
- MemberDecorate 127(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 137(g_tTex1df4a) DescriptorSet 0
- Decorate 137(g_tTex1df4a) Binding 1
- Decorate 140(g_tTexcdf4) DescriptorSet 0
- Decorate 143(g_tTexcdi4) DescriptorSet 0
- Decorate 146(g_tTexcdu4) DescriptorSet 0
+ Decorate 136(Color) Location 0
+ Decorate 140(Depth) BuiltIn FragDepth
+ Decorate 144(g_tTex1df4a) DescriptorSet 0
+ Decorate 144(g_tTex1df4a) Binding 1
+ Decorate 147(g_tTexcdf4) DescriptorSet 0
+ Decorate 150(g_tTexcdi4) DescriptorSet 0
+ Decorate 153(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -459,16 +491,20 @@
130: 6(float) Constant 1065353216
131: 7(fvec4) ConstantComposite 130 130 130 130
133: TypePointer Function 6(float)
-137(g_tTex1df4a): 11(ptr) Variable UniformConstant
- 138: TypeImage 6(float) Cube sampled format:Unknown
- 139: TypePointer UniformConstant 138
- 140(g_tTexcdf4): 139(ptr) Variable UniformConstant
- 141: TypeImage 21(int) Cube sampled format:Unknown
- 142: TypePointer UniformConstant 141
- 143(g_tTexcdi4): 142(ptr) Variable UniformConstant
- 144: TypeImage 36(int) Cube sampled format:Unknown
- 145: TypePointer UniformConstant 144
- 146(g_tTexcdu4): 145(ptr) Variable UniformConstant
+ 135: TypePointer Output 7(fvec4)
+ 136(Color): 135(ptr) Variable Output
+ 139: TypePointer Output 6(float)
+ 140(Depth): 139(ptr) Variable Output
+144(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 145: TypeImage 6(float) Cube sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+ 147(g_tTexcdf4): 146(ptr) Variable UniformConstant
+ 148: TypeImage 21(int) Cube sampled format:Unknown
+ 149: TypePointer UniformConstant 148
+ 150(g_tTexcdi4): 149(ptr) Variable UniformConstant
+ 151: TypeImage 36(int) Cube sampled format:Unknown
+ 152: TypePointer UniformConstant 151
+ 153(g_tTexcdu4): 152(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -530,6 +566,11 @@
Store 132 131
134: 133(ptr) AccessChain 129(psout) 22
Store 134 130
- 135:127(PS_OUTPUT) Load 129(psout)
- ReturnValue 135
+ 137: 8(ptr) AccessChain 129(psout) 60
+ 138: 7(fvec4) Load 137
+ Store 136(Color) 138
+ 141: 133(ptr) AccessChain 129(psout) 22
+ 142: 6(float) Load 141
+ Store 140(Depth) 142
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index 008ba94..b30a4e2 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -85,7 +85,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -94,14 +94,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -111,6 +124,8 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -119,7 +134,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -202,7 +217,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -211,14 +226,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -228,18 +256,19 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 104
+// Id's are bound by 111
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 102 106
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -258,7 +287,9 @@
MemberName 93(PS_OUTPUT) 0 "Color"
MemberName 93(PS_OUTPUT) 1 "Depth"
Name 95 "psout"
- Name 103 "g_tTex1df4a"
+ Name 102 "Color"
+ Name 106 "Depth"
+ Name 110 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -268,9 +299,10 @@
Decorate 59(g_tTex2df4) DescriptorSet 0
Decorate 72(g_tTex2di4) DescriptorSet 0
Decorate 83(g_tTex2du4) DescriptorSet 0
- MemberDecorate 93(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 103(g_tTex1df4a) DescriptorSet 0
- Decorate 103(g_tTex1df4a) Binding 1
+ Decorate 102(Color) Location 0
+ Decorate 106(Depth) BuiltIn FragDepth
+ Decorate 110(g_tTex1df4a) DescriptorSet 0
+ Decorate 110(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -335,7 +367,11 @@
96: 6(float) Constant 1065353216
97: 7(fvec4) ConstantComposite 96 96 96 96
99: TypePointer Function 6(float)
-103(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 101: TypePointer Output 7(fvec4)
+ 102(Color): 101(ptr) Variable Output
+ 105: TypePointer Output 6(float)
+ 106(Depth): 105(ptr) Variable Output
+110(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -379,6 +415,11 @@
Store 98 97
100: 99(ptr) AccessChain 95(psout) 39
Store 100 96
- 101:93(PS_OUTPUT) Load 95(psout)
- ReturnValue 101
+ 103: 8(ptr) AccessChain 95(psout) 25
+ 104: 7(fvec4) Load 103
+ Store 102(Color) 104
+ 107: 99(ptr) AccessChain 95(psout) 39
+ 108: 6(float) Load 107
+ Store 106(Depth) 108
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index b672544..66f4629 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -124,7 +124,7 @@
0:37 0.500000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -133,14 +133,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -153,6 +166,8 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -161,7 +176,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -283,7 +298,7 @@
0:37 0.500000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -292,14 +307,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -312,19 +340,20 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 132
+// Id's are bound by 139
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 130 134
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -349,7 +378,9 @@
MemberName 120(PS_OUTPUT) 0 "Color"
MemberName 120(PS_OUTPUT) 1 "Depth"
Name 122 "psout"
- Name 131 "g_tTex1df4a"
+ Name 130 "Color"
+ Name 134 "Depth"
+ Name 138 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -362,9 +393,10 @@
Decorate 90(g_tTexcdf4) DescriptorSet 0
Decorate 100(g_tTexcdi4) DescriptorSet 0
Decorate 110(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 120(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 131(g_tTex1df4a) DescriptorSet 0
- Decorate 131(g_tTex1df4a) Binding 1
+ Decorate 130(Color) Location 0
+ Decorate 134(Depth) BuiltIn FragDepth
+ Decorate 138(g_tTex1df4a) DescriptorSet 0
+ Decorate 138(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -442,7 +474,11 @@
124: 7(fvec4) ConstantComposite 117 117 117 117
126: 26(int) Constant 1
127: TypePointer Function 6(float)
-131(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 129: TypePointer Output 7(fvec4)
+ 130(Color): 129(ptr) Variable Output
+ 133: TypePointer Output 6(float)
+ 134(Depth): 133(ptr) Variable Output
+138(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -504,6 +540,11 @@
Store 125 124
128: 127(ptr) AccessChain 122(psout) 126
Store 128 117
- 129:120(PS_OUTPUT) Load 122(psout)
- ReturnValue 129
+ 131: 8(ptr) AccessChain 122(psout) 123
+ 132: 7(fvec4) Load 131
+ Store 130(Color) 132
+ 135: 127(ptr) AccessChain 122(psout) 126
+ 136: 6(float) Load 135
+ Store 134(Depth) 136
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index 8161a59..faba4be 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:52 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -154,7 +154,7 @@
0:45 0.500000
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:47 Constant:
0:47 0 (const int)
0:47 Constant:
@@ -163,14 +163,27 @@
0:47 1.000000
0:47 1.000000
0:48 move second child to first child (temp float)
-0:48 Depth: direct index for structure (temp float FragDepth)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 1 (const int)
0:48 Constant:
0:48 1.000000
-0:50 Branch: Return with expression
-0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:50 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:50 Color: direct index for structure (temp 4-component vector of float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 0 (const int)
+0:50 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:50 Depth: direct index for structure (temp float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 1 (const int)
+0:50 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -186,6 +199,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -194,7 +209,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:52 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -346,7 +361,7 @@
0:45 0.500000
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:47 Constant:
0:47 0 (const int)
0:47 Constant:
@@ -355,14 +370,27 @@
0:47 1.000000
0:47 1.000000
0:48 move second child to first child (temp float)
-0:48 Depth: direct index for structure (temp float FragDepth)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 1 (const int)
0:48 Constant:
0:48 1.000000
-0:50 Branch: Return with expression
-0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:50 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:50 Color: direct index for structure (temp 4-component vector of float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 0 (const int)
+0:50 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:50 Depth: direct index for structure (temp float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 1 (const int)
+0:50 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -378,18 +406,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 156
+// Id's are bound by 163
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 154 158
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -420,7 +449,9 @@
MemberName 143(PS_OUTPUT) 0 "Color"
MemberName 143(PS_OUTPUT) 1 "Depth"
Name 145 "psout"
- Name 155 "g_tTex1df4a"
+ Name 154 "Color"
+ Name 158 "Depth"
+ Name 162 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -436,9 +467,10 @@
Decorate 119(g_tTexcdf4) DescriptorSet 0
Decorate 128(g_tTexcdi4) DescriptorSet 0
Decorate 137(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 143(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 155(g_tTex1df4a) DescriptorSet 0
- Decorate 155(g_tTex1df4a) Binding 1
+ Decorate 154(Color) Location 0
+ Decorate 158(Depth) BuiltIn FragDepth
+ Decorate 162(g_tTex1df4a) DescriptorSet 0
+ Decorate 162(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -525,7 +557,11 @@
148: 7(fvec4) ConstantComposite 147 147 147 147
150: 23(int) Constant 1
151: TypePointer Function 6(float)
-155(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 153: TypePointer Output 7(fvec4)
+ 154(Color): 153(ptr) Variable Output
+ 157: TypePointer Output 6(float)
+ 158(Depth): 157(ptr) Variable Output
+162(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -605,6 +641,11 @@
Store 149 148
152: 151(ptr) AccessChain 145(psout) 150
Store 152 147
- 153:143(PS_OUTPUT) Load 145(psout)
- ReturnValue 153
+ 155: 8(ptr) AccessChain 145(psout) 146
+ 156: 7(fvec4) Load 155
+ Store 154(Color) 156
+ 159: 151(ptr) AccessChain 145(psout) 150
+ 160: 6(float) Load 159
+ Store 158(Depth) 160
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index 8c5726c..e83058b 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -142,7 +142,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -151,14 +151,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -174,6 +187,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -182,7 +197,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -322,7 +337,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -331,14 +346,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -354,18 +382,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 147
+// Id's are bound by 154
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 136 140
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -390,10 +419,12 @@
MemberName 127(PS_OUTPUT) 0 "Color"
MemberName 127(PS_OUTPUT) 1 "Depth"
Name 129 "psout"
- Name 137 "g_tTex1df4a"
- Name 140 "g_tTexcdf4"
- Name 143 "g_tTexcdi4"
- Name 146 "g_tTexcdu4"
+ Name 136 "Color"
+ Name 140 "Depth"
+ Name 144 "g_tTex1df4a"
+ Name 147 "g_tTexcdf4"
+ Name 150 "g_tTexcdi4"
+ Name 153 "g_tTexcdu4"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -406,12 +437,13 @@
Decorate 92(g_tTex3df4) DescriptorSet 0
Decorate 105(g_tTex3di4) DescriptorSet 0
Decorate 116(g_tTex3du4) DescriptorSet 0
- MemberDecorate 127(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 137(g_tTex1df4a) DescriptorSet 0
- Decorate 137(g_tTex1df4a) Binding 1
- Decorate 140(g_tTexcdf4) DescriptorSet 0
- Decorate 143(g_tTexcdi4) DescriptorSet 0
- Decorate 146(g_tTexcdu4) DescriptorSet 0
+ Decorate 136(Color) Location 0
+ Decorate 140(Depth) BuiltIn FragDepth
+ Decorate 144(g_tTex1df4a) DescriptorSet 0
+ Decorate 144(g_tTex1df4a) Binding 1
+ Decorate 147(g_tTexcdf4) DescriptorSet 0
+ Decorate 150(g_tTexcdi4) DescriptorSet 0
+ Decorate 153(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -495,16 +527,20 @@
130: 6(float) Constant 1065353216
131: 7(fvec4) ConstantComposite 130 130 130 130
133: TypePointer Function 6(float)
-137(g_tTex1df4a): 11(ptr) Variable UniformConstant
- 138: TypeImage 6(float) Cube sampled format:Unknown
- 139: TypePointer UniformConstant 138
- 140(g_tTexcdf4): 139(ptr) Variable UniformConstant
- 141: TypeImage 22(int) Cube sampled format:Unknown
- 142: TypePointer UniformConstant 141
- 143(g_tTexcdi4): 142(ptr) Variable UniformConstant
- 144: TypeImage 37(int) Cube sampled format:Unknown
- 145: TypePointer UniformConstant 144
- 146(g_tTexcdu4): 145(ptr) Variable UniformConstant
+ 135: TypePointer Output 7(fvec4)
+ 136(Color): 135(ptr) Variable Output
+ 139: TypePointer Output 6(float)
+ 140(Depth): 139(ptr) Variable Output
+144(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 145: TypeImage 6(float) Cube sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+ 147(g_tTexcdf4): 146(ptr) Variable UniformConstant
+ 148: TypeImage 22(int) Cube sampled format:Unknown
+ 149: TypePointer UniformConstant 148
+ 150(g_tTexcdi4): 149(ptr) Variable UniformConstant
+ 151: TypeImage 37(int) Cube sampled format:Unknown
+ 152: TypePointer UniformConstant 151
+ 153(g_tTexcdu4): 152(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -566,6 +602,11 @@
Store 132 131
134: 133(ptr) AccessChain 129(psout) 23
Store 134 130
- 135:127(PS_OUTPUT) Load 129(psout)
- ReturnValue 135
+ 137: 8(ptr) AccessChain 129(psout) 61
+ 138: 7(fvec4) Load 137
+ Store 136(Color) 138
+ 141: 133(ptr) AccessChain 129(psout) 23
+ 142: 6(float) Load 141
+ Store 140(Depth) 142
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index 0933594..a9e4404 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -97,7 +97,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -106,14 +106,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -123,6 +136,8 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -131,7 +146,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -226,7 +241,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -235,14 +250,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -252,18 +280,19 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 104
+// Id's are bound by 111
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 102 106
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -282,7 +311,9 @@
MemberName 93(PS_OUTPUT) 0 "Color"
MemberName 93(PS_OUTPUT) 1 "Depth"
Name 95 "psout"
- Name 103 "g_tTex1df4a"
+ Name 102 "Color"
+ Name 106 "Depth"
+ Name 110 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -292,9 +323,10 @@
Decorate 60(g_tTex2df4) DescriptorSet 0
Decorate 73(g_tTex2di4) DescriptorSet 0
Decorate 83(g_tTex2du4) DescriptorSet 0
- MemberDecorate 93(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 103(g_tTex1df4a) DescriptorSet 0
- Decorate 103(g_tTex1df4a) Binding 1
+ Decorate 102(Color) Location 0
+ Decorate 106(Depth) BuiltIn FragDepth
+ Decorate 110(g_tTex1df4a) DescriptorSet 0
+ Decorate 110(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -359,7 +391,11 @@
96: 6(float) Constant 1065353216
97: 7(fvec4) ConstantComposite 96 96 96 96
99: TypePointer Function 6(float)
-103(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 101: TypePointer Output 7(fvec4)
+ 102(Color): 101(ptr) Variable Output
+ 105: TypePointer Output 6(float)
+ 106(Depth): 105(ptr) Variable Output
+110(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -403,6 +439,11 @@
Store 98 97
100: 99(ptr) AccessChain 95(psout) 40
Store 100 96
- 101:93(PS_OUTPUT) Load 95(psout)
- ReturnValue 101
+ 103: 8(ptr) AccessChain 95(psout) 26
+ 104: 7(fvec4) Load 103
+ Store 102(Color) 104
+ 107: 99(ptr) AccessChain 95(psout) 40
+ 108: 6(float) Load 107
+ Store 106(Depth) 108
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 1b2d27f..660db5b 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:61 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -133,7 +133,7 @@
0:54 0.750000
0:56 move second child to first child (temp 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
-0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 Constant:
@@ -142,14 +142,27 @@
0:56 1.000000
0:56 1.000000
0:57 move second child to first child (temp float)
-0:57 Depth: direct index for structure (temp float FragDepth)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 Depth: direct index for structure (temp float)
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 1 (const int)
0:57 Constant:
0:57 1.000000
-0:59 Branch: Return with expression
-0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:59 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:59 Color: direct index for structure (temp 4-component vector of float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 0 (const int)
+0:59 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:59 Depth: direct index for structure (temp float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 1 (const int)
+0:59 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -173,6 +186,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -181,7 +196,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:61 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -312,7 +327,7 @@
0:54 0.750000
0:56 move second child to first child (temp 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
-0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 Constant:
@@ -321,14 +336,27 @@
0:56 1.000000
0:56 1.000000
0:57 move second child to first child (temp float)
-0:57 Depth: direct index for structure (temp float FragDepth)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 Depth: direct index for structure (temp float)
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 1 (const int)
0:57 Constant:
0:57 1.000000
-0:59 Branch: Return with expression
-0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:59 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:59 Color: direct index for structure (temp 4-component vector of float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 0 (const int)
+0:59 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:59 Depth: direct index for structure (temp float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 1 (const int)
+0:59 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -352,19 +380,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 177
+// Id's are bound by 184
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 140 144
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r10"
Name 11 "g_tTex1df4a"
@@ -389,18 +418,20 @@
MemberName 129(PS_OUTPUT) 0 "Color"
MemberName 129(PS_OUTPUT) 1 "Depth"
Name 131 "psout"
- Name 143 "g_tTex1df4"
- Name 146 "g_tTex1di4"
- Name 149 "g_tTex1du4"
- Name 152 "g_tTex2df4"
- Name 155 "g_tTex2di4"
- Name 158 "g_tTex2du4"
- Name 161 "g_tTex3df4"
- Name 164 "g_tTex3di4"
- Name 167 "g_tTex3du4"
- Name 170 "g_tTexcdf4"
- Name 173 "g_tTexcdi4"
- Name 176 "g_tTexcdu4"
+ Name 140 "Color"
+ Name 144 "Depth"
+ Name 150 "g_tTex1df4"
+ Name 153 "g_tTex1di4"
+ Name 156 "g_tTex1du4"
+ Name 159 "g_tTex2df4"
+ Name 162 "g_tTex2di4"
+ Name 165 "g_tTex2du4"
+ Name 168 "g_tTex3df4"
+ Name 171 "g_tTex3di4"
+ Name 174 "g_tTex3du4"
+ Name 177 "g_tTexcdf4"
+ Name 180 "g_tTexcdi4"
+ Name 183 "g_tTexcdu4"
Decorate 11(g_tTex1df4a) DescriptorSet 0
Decorate 15(g_sSamp) DescriptorSet 0
Decorate 15(g_sSamp) Binding 0
@@ -412,20 +443,21 @@
Decorate 96(g_tTexcdf4a) DescriptorSet 0
Decorate 110(g_tTexcdi4a) DescriptorSet 0
Decorate 121(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 129(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 143(g_tTex1df4) DescriptorSet 0
- Decorate 143(g_tTex1df4) Binding 0
- Decorate 146(g_tTex1di4) DescriptorSet 0
- Decorate 149(g_tTex1du4) DescriptorSet 0
- Decorate 152(g_tTex2df4) DescriptorSet 0
- Decorate 155(g_tTex2di4) DescriptorSet 0
- Decorate 158(g_tTex2du4) DescriptorSet 0
- Decorate 161(g_tTex3df4) DescriptorSet 0
- Decorate 164(g_tTex3di4) DescriptorSet 0
- Decorate 167(g_tTex3du4) DescriptorSet 0
- Decorate 170(g_tTexcdf4) DescriptorSet 0
- Decorate 173(g_tTexcdi4) DescriptorSet 0
- Decorate 176(g_tTexcdu4) DescriptorSet 0
+ Decorate 140(Color) Location 0
+ Decorate 144(Depth) BuiltIn FragDepth
+ Decorate 150(g_tTex1df4) DescriptorSet 0
+ Decorate 150(g_tTex1df4) Binding 0
+ Decorate 153(g_tTex1di4) DescriptorSet 0
+ Decorate 156(g_tTex1du4) DescriptorSet 0
+ Decorate 159(g_tTex2df4) DescriptorSet 0
+ Decorate 162(g_tTex2di4) DescriptorSet 0
+ Decorate 165(g_tTex2du4) DescriptorSet 0
+ Decorate 168(g_tTex3df4) DescriptorSet 0
+ Decorate 171(g_tTex3di4) DescriptorSet 0
+ Decorate 174(g_tTex3du4) DescriptorSet 0
+ Decorate 177(g_tTexcdf4) DescriptorSet 0
+ Decorate 180(g_tTexcdi4) DescriptorSet 0
+ Decorate 183(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -498,42 +530,46 @@
134: 102(fvec4) ConstantComposite 133 133 133 133
135: TypePointer Function 102(fvec4)
137: 29(int) Constant 1
- 141: TypeImage 6(float) 1D sampled format:Unknown
- 142: TypePointer UniformConstant 141
- 143(g_tTex1df4): 142(ptr) Variable UniformConstant
- 144: TypeImage 29(int) 1D sampled format:Unknown
- 145: TypePointer UniformConstant 144
- 146(g_tTex1di4): 145(ptr) Variable UniformConstant
- 147: TypeImage 42(int) 1D sampled format:Unknown
- 148: TypePointer UniformConstant 147
- 149(g_tTex1du4): 148(ptr) Variable UniformConstant
- 150: TypeImage 6(float) 2D sampled format:Unknown
- 151: TypePointer UniformConstant 150
- 152(g_tTex2df4): 151(ptr) Variable UniformConstant
- 153: TypeImage 29(int) 2D sampled format:Unknown
- 154: TypePointer UniformConstant 153
- 155(g_tTex2di4): 154(ptr) Variable UniformConstant
- 156: TypeImage 42(int) 2D sampled format:Unknown
- 157: TypePointer UniformConstant 156
- 158(g_tTex2du4): 157(ptr) Variable UniformConstant
- 159: TypeImage 6(float) 3D sampled format:Unknown
- 160: TypePointer UniformConstant 159
- 161(g_tTex3df4): 160(ptr) Variable UniformConstant
- 162: TypeImage 29(int) 3D sampled format:Unknown
- 163: TypePointer UniformConstant 162
- 164(g_tTex3di4): 163(ptr) Variable UniformConstant
- 165: TypeImage 42(int) 3D sampled format:Unknown
- 166: TypePointer UniformConstant 165
- 167(g_tTex3du4): 166(ptr) Variable UniformConstant
- 168: TypeImage 6(float) Cube sampled format:Unknown
- 169: TypePointer UniformConstant 168
- 170(g_tTexcdf4): 169(ptr) Variable UniformConstant
- 171: TypeImage 29(int) Cube sampled format:Unknown
- 172: TypePointer UniformConstant 171
- 173(g_tTexcdi4): 172(ptr) Variable UniformConstant
- 174: TypeImage 42(int) Cube sampled format:Unknown
- 175: TypePointer UniformConstant 174
- 176(g_tTexcdu4): 175(ptr) Variable UniformConstant
+ 139: TypePointer Output 102(fvec4)
+ 140(Color): 139(ptr) Variable Output
+ 143: TypePointer Output 6(float)
+ 144(Depth): 143(ptr) Variable Output
+ 148: TypeImage 6(float) 1D sampled format:Unknown
+ 149: TypePointer UniformConstant 148
+ 150(g_tTex1df4): 149(ptr) Variable UniformConstant
+ 151: TypeImage 29(int) 1D sampled format:Unknown
+ 152: TypePointer UniformConstant 151
+ 153(g_tTex1di4): 152(ptr) Variable UniformConstant
+ 154: TypeImage 42(int) 1D sampled format:Unknown
+ 155: TypePointer UniformConstant 154
+ 156(g_tTex1du4): 155(ptr) Variable UniformConstant
+ 157: TypeImage 6(float) 2D sampled format:Unknown
+ 158: TypePointer UniformConstant 157
+ 159(g_tTex2df4): 158(ptr) Variable UniformConstant
+ 160: TypeImage 29(int) 2D sampled format:Unknown
+ 161: TypePointer UniformConstant 160
+ 162(g_tTex2di4): 161(ptr) Variable UniformConstant
+ 163: TypeImage 42(int) 2D sampled format:Unknown
+ 164: TypePointer UniformConstant 163
+ 165(g_tTex2du4): 164(ptr) Variable UniformConstant
+ 166: TypeImage 6(float) 3D sampled format:Unknown
+ 167: TypePointer UniformConstant 166
+ 168(g_tTex3df4): 167(ptr) Variable UniformConstant
+ 169: TypeImage 29(int) 3D sampled format:Unknown
+ 170: TypePointer UniformConstant 169
+ 171(g_tTex3di4): 170(ptr) Variable UniformConstant
+ 172: TypeImage 42(int) 3D sampled format:Unknown
+ 173: TypePointer UniformConstant 172
+ 174(g_tTex3du4): 173(ptr) Variable UniformConstant
+ 175: TypeImage 6(float) Cube sampled format:Unknown
+ 176: TypePointer UniformConstant 175
+ 177(g_tTexcdf4): 176(ptr) Variable UniformConstant
+ 178: TypeImage 29(int) Cube sampled format:Unknown
+ 179: TypePointer UniformConstant 178
+ 180(g_tTexcdi4): 179(ptr) Variable UniformConstant
+ 181: TypeImage 42(int) Cube sampled format:Unknown
+ 182: TypePointer UniformConstant 181
+ 183(g_tTexcdu4): 182(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r10): 7(ptr) Variable Function
@@ -610,6 +646,11 @@
Store 136 134
138: 7(ptr) AccessChain 131(psout) 137
Store 138 133
- 139:129(PS_OUTPUT) Load 131(psout)
- ReturnValue 139
+ 141: 135(ptr) AccessChain 131(psout) 132
+ 142: 102(fvec4) Load 141
+ Store 140(Color) 142
+ 145: 7(ptr) AccessChain 131(psout) 137
+ 146: 6(float) Load 145
+ Store 144(Depth) 146
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index 3068030..253a59e 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:62 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -124,7 +124,7 @@
0:55 0.750000
0:57 move second child to first child (temp 4-component vector of float)
0:57 Color: direct index for structure (temp 4-component vector of float)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 0 (const int)
0:57 Constant:
@@ -133,14 +133,27 @@
0:57 1.000000
0:57 1.000000
0:58 move second child to first child (temp float)
-0:58 Depth: direct index for structure (temp float FragDepth)
-0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:58 Depth: direct index for structure (temp float)
+0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:58 Constant:
0:58 1 (const int)
0:58 Constant:
0:58 1.000000
-0:60 Branch: Return with expression
-0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:60 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:60 Color: direct index for structure (temp 4-component vector of float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 0 (const int)
+0:60 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:60 Depth: direct index for structure (temp float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 1 (const int)
+0:60 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -164,6 +177,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -172,7 +187,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:62 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -294,7 +309,7 @@
0:55 0.750000
0:57 move second child to first child (temp 4-component vector of float)
0:57 Color: direct index for structure (temp 4-component vector of float)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 0 (const int)
0:57 Constant:
@@ -303,14 +318,27 @@
0:57 1.000000
0:57 1.000000
0:58 move second child to first child (temp float)
-0:58 Depth: direct index for structure (temp float FragDepth)
-0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:58 Depth: direct index for structure (temp float)
+0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:58 Constant:
0:58 1 (const int)
0:58 Constant:
0:58 1.000000
-0:60 Branch: Return with expression
-0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:60 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:60 Color: direct index for structure (temp 4-component vector of float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 0 (const int)
+0:60 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:60 Depth: direct index for structure (temp float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 1 (const int)
+0:60 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -334,19 +362,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 175
+// Id's are bound by 182
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 138 142
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r00"
Name 11 "g_tTex1df4"
@@ -371,18 +400,20 @@
MemberName 127(PS_OUTPUT) 0 "Color"
MemberName 127(PS_OUTPUT) 1 "Depth"
Name 129 "psout"
- Name 141 "g_tTex3df4"
- Name 144 "g_tTex3di4"
- Name 147 "g_tTex3du4"
- Name 150 "g_tTex1df4a"
- Name 153 "g_tTex1di4a"
- Name 156 "g_tTex1du4a"
- Name 159 "g_tTex2df4a"
- Name 162 "g_tTex2di4a"
- Name 165 "g_tTex2du4a"
- Name 168 "g_tTexcdf4a"
- Name 171 "g_tTexcdi4a"
- Name 174 "g_tTexcdu4a"
+ Name 138 "Color"
+ Name 142 "Depth"
+ Name 148 "g_tTex3df4"
+ Name 151 "g_tTex3di4"
+ Name 154 "g_tTex3du4"
+ Name 157 "g_tTex1df4a"
+ Name 160 "g_tTex1di4a"
+ Name 163 "g_tTex1du4a"
+ Name 166 "g_tTex2df4a"
+ Name 169 "g_tTex2di4a"
+ Name 172 "g_tTex2du4a"
+ Name 175 "g_tTexcdf4a"
+ Name 178 "g_tTexcdi4a"
+ Name 181 "g_tTexcdu4a"
Decorate 11(g_tTex1df4) DescriptorSet 0
Decorate 11(g_tTex1df4) Binding 0
Decorate 15(g_sSamp) DescriptorSet 0
@@ -395,19 +426,20 @@
Decorate 90(g_tTexcdf4) DescriptorSet 0
Decorate 105(g_tTexcdi4) DescriptorSet 0
Decorate 117(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 127(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 141(g_tTex3df4) DescriptorSet 0
- Decorate 144(g_tTex3di4) DescriptorSet 0
- Decorate 147(g_tTex3du4) DescriptorSet 0
- Decorate 150(g_tTex1df4a) DescriptorSet 0
- Decorate 153(g_tTex1di4a) DescriptorSet 0
- Decorate 156(g_tTex1du4a) DescriptorSet 0
- Decorate 159(g_tTex2df4a) DescriptorSet 0
- Decorate 162(g_tTex2di4a) DescriptorSet 0
- Decorate 165(g_tTex2du4a) DescriptorSet 0
- Decorate 168(g_tTexcdf4a) DescriptorSet 0
- Decorate 171(g_tTexcdi4a) DescriptorSet 0
- Decorate 174(g_tTexcdu4a) DescriptorSet 0
+ Decorate 138(Color) Location 0
+ Decorate 142(Depth) BuiltIn FragDepth
+ Decorate 148(g_tTex3df4) DescriptorSet 0
+ Decorate 151(g_tTex3di4) DescriptorSet 0
+ Decorate 154(g_tTex3du4) DescriptorSet 0
+ Decorate 157(g_tTex1df4a) DescriptorSet 0
+ Decorate 160(g_tTex1di4a) DescriptorSet 0
+ Decorate 163(g_tTex1du4a) DescriptorSet 0
+ Decorate 166(g_tTex2df4a) DescriptorSet 0
+ Decorate 169(g_tTex2di4a) DescriptorSet 0
+ Decorate 172(g_tTex2du4a) DescriptorSet 0
+ Decorate 175(g_tTexcdf4a) DescriptorSet 0
+ Decorate 178(g_tTexcdi4a) DescriptorSet 0
+ Decorate 181(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -478,42 +510,46 @@
132: 126(fvec4) ConstantComposite 131 131 131 131
133: TypePointer Function 126(fvec4)
135: 25(int) Constant 1
- 139: TypeImage 6(float) 3D sampled format:Unknown
- 140: TypePointer UniformConstant 139
- 141(g_tTex3df4): 140(ptr) Variable UniformConstant
- 142: TypeImage 25(int) 3D sampled format:Unknown
- 143: TypePointer UniformConstant 142
- 144(g_tTex3di4): 143(ptr) Variable UniformConstant
- 145: TypeImage 37(int) 3D sampled format:Unknown
- 146: TypePointer UniformConstant 145
- 147(g_tTex3du4): 146(ptr) Variable UniformConstant
- 148: TypeImage 6(float) 1D array sampled format:Unknown
- 149: TypePointer UniformConstant 148
-150(g_tTex1df4a): 149(ptr) Variable UniformConstant
- 151: TypeImage 25(int) 1D array sampled format:Unknown
- 152: TypePointer UniformConstant 151
-153(g_tTex1di4a): 152(ptr) Variable UniformConstant
- 154: TypeImage 37(int) 1D array sampled format:Unknown
- 155: TypePointer UniformConstant 154
-156(g_tTex1du4a): 155(ptr) Variable UniformConstant
- 157: TypeImage 6(float) 2D array sampled format:Unknown
- 158: TypePointer UniformConstant 157
-159(g_tTex2df4a): 158(ptr) Variable UniformConstant
- 160: TypeImage 25(int) 2D array sampled format:Unknown
- 161: TypePointer UniformConstant 160
-162(g_tTex2di4a): 161(ptr) Variable UniformConstant
- 163: TypeImage 37(int) 2D array sampled format:Unknown
- 164: TypePointer UniformConstant 163
-165(g_tTex2du4a): 164(ptr) Variable UniformConstant
- 166: TypeImage 6(float) Cube array sampled format:Unknown
- 167: TypePointer UniformConstant 166
-168(g_tTexcdf4a): 167(ptr) Variable UniformConstant
- 169: TypeImage 25(int) Cube array sampled format:Unknown
- 170: TypePointer UniformConstant 169
-171(g_tTexcdi4a): 170(ptr) Variable UniformConstant
- 172: TypeImage 37(int) Cube array sampled format:Unknown
- 173: TypePointer UniformConstant 172
-174(g_tTexcdu4a): 173(ptr) Variable UniformConstant
+ 137: TypePointer Output 126(fvec4)
+ 138(Color): 137(ptr) Variable Output
+ 141: TypePointer Output 6(float)
+ 142(Depth): 141(ptr) Variable Output
+ 146: TypeImage 6(float) 3D sampled format:Unknown
+ 147: TypePointer UniformConstant 146
+ 148(g_tTex3df4): 147(ptr) Variable UniformConstant
+ 149: TypeImage 25(int) 3D sampled format:Unknown
+ 150: TypePointer UniformConstant 149
+ 151(g_tTex3di4): 150(ptr) Variable UniformConstant
+ 152: TypeImage 37(int) 3D sampled format:Unknown
+ 153: TypePointer UniformConstant 152
+ 154(g_tTex3du4): 153(ptr) Variable UniformConstant
+ 155: TypeImage 6(float) 1D array sampled format:Unknown
+ 156: TypePointer UniformConstant 155
+157(g_tTex1df4a): 156(ptr) Variable UniformConstant
+ 158: TypeImage 25(int) 1D array sampled format:Unknown
+ 159: TypePointer UniformConstant 158
+160(g_tTex1di4a): 159(ptr) Variable UniformConstant
+ 161: TypeImage 37(int) 1D array sampled format:Unknown
+ 162: TypePointer UniformConstant 161
+163(g_tTex1du4a): 162(ptr) Variable UniformConstant
+ 164: TypeImage 6(float) 2D array sampled format:Unknown
+ 165: TypePointer UniformConstant 164
+166(g_tTex2df4a): 165(ptr) Variable UniformConstant
+ 167: TypeImage 25(int) 2D array sampled format:Unknown
+ 168: TypePointer UniformConstant 167
+169(g_tTex2di4a): 168(ptr) Variable UniformConstant
+ 170: TypeImage 37(int) 2D array sampled format:Unknown
+ 171: TypePointer UniformConstant 170
+172(g_tTex2du4a): 171(ptr) Variable UniformConstant
+ 173: TypeImage 6(float) Cube array sampled format:Unknown
+ 174: TypePointer UniformConstant 173
+175(g_tTexcdf4a): 174(ptr) Variable UniformConstant
+ 176: TypeImage 25(int) Cube array sampled format:Unknown
+ 177: TypePointer UniformConstant 176
+178(g_tTexcdi4a): 177(ptr) Variable UniformConstant
+ 179: TypeImage 37(int) Cube array sampled format:Unknown
+ 180: TypePointer UniformConstant 179
+181(g_tTexcdu4a): 180(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r00): 7(ptr) Variable Function
@@ -590,6 +626,11 @@
Store 134 132
136: 7(ptr) AccessChain 129(psout) 135
Store 136 131
- 137:127(PS_OUTPUT) Load 129(psout)
- ReturnValue 137
+ 139: 133(ptr) AccessChain 129(psout) 130
+ 140: 126(fvec4) Load 139
+ Store 138(Color) 140
+ 143: 7(ptr) AccessChain 129(psout) 135
+ 144: 6(float) Load 143
+ Store 142(Depth) 144
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index df298da..3d744bd 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:67 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -97,7 +97,7 @@
0:? 3 (const int)
0:62 move second child to first child (temp 4-component vector of float)
0:62 Color: direct index for structure (temp 4-component vector of float)
-0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:62 Constant:
0:62 0 (const int)
0:62 Constant:
@@ -106,14 +106,27 @@
0:62 1.000000
0:62 1.000000
0:63 move second child to first child (temp float)
-0:63 Depth: direct index for structure (temp float FragDepth)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 Depth: direct index for structure (temp float)
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1.000000
-0:65 Branch: Return with expression
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:65 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:65 Color: direct index for structure (temp 4-component vector of float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 0 (const int)
+0:65 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:65 Depth: direct index for structure (temp float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 1 (const int)
+0:65 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -137,6 +150,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -145,7 +160,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:67 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -240,7 +255,7 @@
0:? 3 (const int)
0:62 move second child to first child (temp 4-component vector of float)
0:62 Color: direct index for structure (temp 4-component vector of float)
-0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:62 Constant:
0:62 0 (const int)
0:62 Constant:
@@ -249,14 +264,27 @@
0:62 1.000000
0:62 1.000000
0:63 move second child to first child (temp float)
-0:63 Depth: direct index for structure (temp float FragDepth)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 Depth: direct index for structure (temp float)
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1.000000
-0:65 Branch: Return with expression
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:65 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:65 Color: direct index for structure (temp 4-component vector of float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 0 (const int)
+0:65 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:65 Depth: direct index for structure (temp float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 1 (const int)
+0:65 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -280,19 +308,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 149
+// Id's are bound by 156
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 103 107
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r01"
Name 11 "g_tTex1df4"
@@ -311,21 +340,23 @@
MemberName 92(PS_OUTPUT) 0 "Color"
MemberName 92(PS_OUTPUT) 1 "Depth"
Name 94 "psout"
- Name 106 "g_tTex3df4"
- Name 109 "g_tTex3di4"
- Name 112 "g_tTex3du4"
- Name 115 "g_tTexcdf4"
- Name 118 "g_tTexcdi4"
- Name 121 "g_tTexcdu4"
- Name 124 "g_tTex1df4a"
- Name 127 "g_tTex1di4a"
- Name 130 "g_tTex1du4a"
- Name 133 "g_tTex2df4a"
- Name 136 "g_tTex2di4a"
- Name 139 "g_tTex2du4a"
- Name 142 "g_tTexcdf4a"
- Name 145 "g_tTexcdi4a"
- Name 148 "g_tTexcdu4a"
+ Name 103 "Color"
+ Name 107 "Depth"
+ Name 113 "g_tTex3df4"
+ Name 116 "g_tTex3di4"
+ Name 119 "g_tTex3du4"
+ Name 122 "g_tTexcdf4"
+ Name 125 "g_tTexcdi4"
+ Name 128 "g_tTexcdu4"
+ Name 131 "g_tTex1df4a"
+ Name 134 "g_tTex1di4a"
+ Name 137 "g_tTex1du4a"
+ Name 140 "g_tTex2df4a"
+ Name 143 "g_tTex2di4a"
+ Name 146 "g_tTex2du4a"
+ Name 149 "g_tTexcdf4a"
+ Name 152 "g_tTexcdi4a"
+ Name 155 "g_tTexcdu4a"
Decorate 11(g_tTex1df4) DescriptorSet 0
Decorate 11(g_tTex1df4) Binding 0
Decorate 15(g_sSamp) DescriptorSet 0
@@ -335,22 +366,23 @@
Decorate 52(g_tTex2df4) DescriptorSet 0
Decorate 70(g_tTex2di4) DescriptorSet 0
Decorate 82(g_tTex2du4) DescriptorSet 0
- MemberDecorate 92(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 106(g_tTex3df4) DescriptorSet 0
- Decorate 109(g_tTex3di4) DescriptorSet 0
- Decorate 112(g_tTex3du4) DescriptorSet 0
- Decorate 115(g_tTexcdf4) DescriptorSet 0
- Decorate 118(g_tTexcdi4) DescriptorSet 0
- Decorate 121(g_tTexcdu4) DescriptorSet 0
- Decorate 124(g_tTex1df4a) DescriptorSet 0
- Decorate 127(g_tTex1di4a) DescriptorSet 0
- Decorate 130(g_tTex1du4a) DescriptorSet 0
- Decorate 133(g_tTex2df4a) DescriptorSet 0
- Decorate 136(g_tTex2di4a) DescriptorSet 0
- Decorate 139(g_tTex2du4a) DescriptorSet 0
- Decorate 142(g_tTexcdf4a) DescriptorSet 0
- Decorate 145(g_tTexcdi4a) DescriptorSet 0
- Decorate 148(g_tTexcdu4a) DescriptorSet 0
+ Decorate 103(Color) Location 0
+ Decorate 107(Depth) BuiltIn FragDepth
+ Decorate 113(g_tTex3df4) DescriptorSet 0
+ Decorate 116(g_tTex3di4) DescriptorSet 0
+ Decorate 119(g_tTex3du4) DescriptorSet 0
+ Decorate 122(g_tTexcdf4) DescriptorSet 0
+ Decorate 125(g_tTexcdi4) DescriptorSet 0
+ Decorate 128(g_tTexcdu4) DescriptorSet 0
+ Decorate 131(g_tTex1df4a) DescriptorSet 0
+ Decorate 134(g_tTex1di4a) DescriptorSet 0
+ Decorate 137(g_tTex1du4a) DescriptorSet 0
+ Decorate 140(g_tTex2df4a) DescriptorSet 0
+ Decorate 143(g_tTex2di4a) DescriptorSet 0
+ Decorate 146(g_tTex2du4a) DescriptorSet 0
+ Decorate 149(g_tTexcdf4a) DescriptorSet 0
+ Decorate 152(g_tTexcdi4a) DescriptorSet 0
+ Decorate 155(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -407,51 +439,55 @@
97: 91(fvec4) ConstantComposite 96 96 96 96
98: TypePointer Function 91(fvec4)
100: 22(int) Constant 1
- 104: TypeImage 6(float) 3D sampled format:Unknown
- 105: TypePointer UniformConstant 104
- 106(g_tTex3df4): 105(ptr) Variable UniformConstant
- 107: TypeImage 22(int) 3D sampled format:Unknown
- 108: TypePointer UniformConstant 107
- 109(g_tTex3di4): 108(ptr) Variable UniformConstant
- 110: TypeImage 38(int) 3D sampled format:Unknown
- 111: TypePointer UniformConstant 110
- 112(g_tTex3du4): 111(ptr) Variable UniformConstant
- 113: TypeImage 6(float) Cube sampled format:Unknown
- 114: TypePointer UniformConstant 113
- 115(g_tTexcdf4): 114(ptr) Variable UniformConstant
- 116: TypeImage 22(int) Cube sampled format:Unknown
- 117: TypePointer UniformConstant 116
- 118(g_tTexcdi4): 117(ptr) Variable UniformConstant
- 119: TypeImage 38(int) Cube sampled format:Unknown
- 120: TypePointer UniformConstant 119
- 121(g_tTexcdu4): 120(ptr) Variable UniformConstant
- 122: TypeImage 6(float) 1D array sampled format:Unknown
- 123: TypePointer UniformConstant 122
-124(g_tTex1df4a): 123(ptr) Variable UniformConstant
- 125: TypeImage 22(int) 1D array sampled format:Unknown
- 126: TypePointer UniformConstant 125
-127(g_tTex1di4a): 126(ptr) Variable UniformConstant
- 128: TypeImage 38(int) 1D array sampled format:Unknown
- 129: TypePointer UniformConstant 128
-130(g_tTex1du4a): 129(ptr) Variable UniformConstant
- 131: TypeImage 6(float) 2D array sampled format:Unknown
- 132: TypePointer UniformConstant 131
-133(g_tTex2df4a): 132(ptr) Variable UniformConstant
- 134: TypeImage 22(int) 2D array sampled format:Unknown
- 135: TypePointer UniformConstant 134
-136(g_tTex2di4a): 135(ptr) Variable UniformConstant
- 137: TypeImage 38(int) 2D array sampled format:Unknown
- 138: TypePointer UniformConstant 137
-139(g_tTex2du4a): 138(ptr) Variable UniformConstant
- 140: TypeImage 6(float) Cube array sampled format:Unknown
- 141: TypePointer UniformConstant 140
-142(g_tTexcdf4a): 141(ptr) Variable UniformConstant
- 143: TypeImage 22(int) Cube array sampled format:Unknown
- 144: TypePointer UniformConstant 143
-145(g_tTexcdi4a): 144(ptr) Variable UniformConstant
- 146: TypeImage 38(int) Cube array sampled format:Unknown
- 147: TypePointer UniformConstant 146
-148(g_tTexcdu4a): 147(ptr) Variable UniformConstant
+ 102: TypePointer Output 91(fvec4)
+ 103(Color): 102(ptr) Variable Output
+ 106: TypePointer Output 6(float)
+ 107(Depth): 106(ptr) Variable Output
+ 111: TypeImage 6(float) 3D sampled format:Unknown
+ 112: TypePointer UniformConstant 111
+ 113(g_tTex3df4): 112(ptr) Variable UniformConstant
+ 114: TypeImage 22(int) 3D sampled format:Unknown
+ 115: TypePointer UniformConstant 114
+ 116(g_tTex3di4): 115(ptr) Variable UniformConstant
+ 117: TypeImage 38(int) 3D sampled format:Unknown
+ 118: TypePointer UniformConstant 117
+ 119(g_tTex3du4): 118(ptr) Variable UniformConstant
+ 120: TypeImage 6(float) Cube sampled format:Unknown
+ 121: TypePointer UniformConstant 120
+ 122(g_tTexcdf4): 121(ptr) Variable UniformConstant
+ 123: TypeImage 22(int) Cube sampled format:Unknown
+ 124: TypePointer UniformConstant 123
+ 125(g_tTexcdi4): 124(ptr) Variable UniformConstant
+ 126: TypeImage 38(int) Cube sampled format:Unknown
+ 127: TypePointer UniformConstant 126
+ 128(g_tTexcdu4): 127(ptr) Variable UniformConstant
+ 129: TypeImage 6(float) 1D array sampled format:Unknown
+ 130: TypePointer UniformConstant 129
+131(g_tTex1df4a): 130(ptr) Variable UniformConstant
+ 132: TypeImage 22(int) 1D array sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+134(g_tTex1di4a): 133(ptr) Variable UniformConstant
+ 135: TypeImage 38(int) 1D array sampled format:Unknown
+ 136: TypePointer UniformConstant 135
+137(g_tTex1du4a): 136(ptr) Variable UniformConstant
+ 138: TypeImage 6(float) 2D array sampled format:Unknown
+ 139: TypePointer UniformConstant 138
+140(g_tTex2df4a): 139(ptr) Variable UniformConstant
+ 141: TypeImage 22(int) 2D array sampled format:Unknown
+ 142: TypePointer UniformConstant 141
+143(g_tTex2di4a): 142(ptr) Variable UniformConstant
+ 144: TypeImage 38(int) 2D array sampled format:Unknown
+ 145: TypePointer UniformConstant 144
+146(g_tTex2du4a): 145(ptr) Variable UniformConstant
+ 147: TypeImage 6(float) Cube array sampled format:Unknown
+ 148: TypePointer UniformConstant 147
+149(g_tTexcdf4a): 148(ptr) Variable UniformConstant
+ 150: TypeImage 22(int) Cube array sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+152(g_tTexcdi4a): 151(ptr) Variable UniformConstant
+ 153: TypeImage 38(int) Cube array sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+155(g_tTexcdu4a): 154(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r01): 7(ptr) Variable Function
@@ -504,6 +540,11 @@
Store 99 97
101: 7(ptr) AccessChain 94(psout) 100
Store 101 96
- 102:92(PS_OUTPUT) Load 94(psout)
- ReturnValue 102
+ 104: 98(ptr) AccessChain 94(psout) 95
+ 105: 91(fvec4) Load 104
+ Store 103(Color) 105
+ 108: 7(ptr) AccessChain 94(psout) 100
+ 109: 6(float) Load 108
+ Store 107(Depth) 109
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index 5d42073..2eb302e 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:68 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -103,7 +103,7 @@
0:? 3 (const int)
0:63 move second child to first child (temp 4-component vector of float)
0:63 Color: direct index for structure (temp 4-component vector of float)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
@@ -112,14 +112,27 @@
0:63 1.000000
0:63 1.000000
0:64 move second child to first child (temp float)
-0:64 Depth: direct index for structure (temp float FragDepth)
-0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:64 Depth: direct index for structure (temp float)
+0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:64 Constant:
0:64 1 (const int)
0:64 Constant:
0:64 1.000000
-0:66 Branch: Return with expression
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:66 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:66 Color: direct index for structure (temp 4-component vector of float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 0 (const int)
+0:66 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 1 (const int)
+0:66 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -143,6 +156,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -151,7 +166,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:68 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -252,7 +267,7 @@
0:? 3 (const int)
0:63 move second child to first child (temp 4-component vector of float)
0:63 Color: direct index for structure (temp 4-component vector of float)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
@@ -261,14 +276,27 @@
0:63 1.000000
0:63 1.000000
0:64 move second child to first child (temp float)
-0:64 Depth: direct index for structure (temp float FragDepth)
-0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:64 Depth: direct index for structure (temp float)
+0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:64 Constant:
0:64 1 (const int)
0:64 Constant:
0:64 1.000000
-0:66 Branch: Return with expression
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:66 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:66 Color: direct index for structure (temp 4-component vector of float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 0 (const int)
+0:66 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 1 (const int)
+0:66 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -292,19 +320,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 155
+// Id's are bound by 162
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 109 113
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r11"
Name 11 "g_tTex1df4a"
@@ -323,21 +352,23 @@
MemberName 98(PS_OUTPUT) 0 "Color"
MemberName 98(PS_OUTPUT) 1 "Depth"
Name 100 "psout"
- Name 112 "g_tTex1df4"
- Name 115 "g_tTex1di4"
- Name 118 "g_tTex1du4"
- Name 121 "g_tTex2df4"
- Name 124 "g_tTex2di4"
- Name 127 "g_tTex2du4"
- Name 130 "g_tTex3df4"
- Name 133 "g_tTex3di4"
- Name 136 "g_tTex3du4"
- Name 139 "g_tTexcdf4"
- Name 142 "g_tTexcdi4"
- Name 145 "g_tTexcdu4"
- Name 148 "g_tTexcdf4a"
- Name 151 "g_tTexcdi4a"
- Name 154 "g_tTexcdu4a"
+ Name 109 "Color"
+ Name 113 "Depth"
+ Name 119 "g_tTex1df4"
+ Name 122 "g_tTex1di4"
+ Name 125 "g_tTex1du4"
+ Name 128 "g_tTex2df4"
+ Name 131 "g_tTex2di4"
+ Name 134 "g_tTex2du4"
+ Name 137 "g_tTex3df4"
+ Name 140 "g_tTex3di4"
+ Name 143 "g_tTex3du4"
+ Name 146 "g_tTexcdf4"
+ Name 149 "g_tTexcdi4"
+ Name 152 "g_tTexcdu4"
+ Name 155 "g_tTexcdf4a"
+ Name 158 "g_tTexcdi4a"
+ Name 161 "g_tTexcdu4a"
Decorate 11(g_tTex1df4a) DescriptorSet 0
Decorate 15(g_sSamp) DescriptorSet 0
Decorate 15(g_sSamp) Binding 0
@@ -346,23 +377,24 @@
Decorate 58(g_tTex2df4a) DescriptorSet 0
Decorate 76(g_tTex2di4a) DescriptorSet 0
Decorate 88(g_tTex2du4a) DescriptorSet 0
- MemberDecorate 98(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 112(g_tTex1df4) DescriptorSet 0
- Decorate 112(g_tTex1df4) Binding 0
- Decorate 115(g_tTex1di4) DescriptorSet 0
- Decorate 118(g_tTex1du4) DescriptorSet 0
- Decorate 121(g_tTex2df4) DescriptorSet 0
- Decorate 124(g_tTex2di4) DescriptorSet 0
- Decorate 127(g_tTex2du4) DescriptorSet 0
- Decorate 130(g_tTex3df4) DescriptorSet 0
- Decorate 133(g_tTex3di4) DescriptorSet 0
- Decorate 136(g_tTex3du4) DescriptorSet 0
- Decorate 139(g_tTexcdf4) DescriptorSet 0
- Decorate 142(g_tTexcdi4) DescriptorSet 0
- Decorate 145(g_tTexcdu4) DescriptorSet 0
- Decorate 148(g_tTexcdf4a) DescriptorSet 0
- Decorate 151(g_tTexcdi4a) DescriptorSet 0
- Decorate 154(g_tTexcdu4a) DescriptorSet 0
+ Decorate 109(Color) Location 0
+ Decorate 113(Depth) BuiltIn FragDepth
+ Decorate 119(g_tTex1df4) DescriptorSet 0
+ Decorate 119(g_tTex1df4) Binding 0
+ Decorate 122(g_tTex1di4) DescriptorSet 0
+ Decorate 125(g_tTex1du4) DescriptorSet 0
+ Decorate 128(g_tTex2df4) DescriptorSet 0
+ Decorate 131(g_tTex2di4) DescriptorSet 0
+ Decorate 134(g_tTex2du4) DescriptorSet 0
+ Decorate 137(g_tTex3df4) DescriptorSet 0
+ Decorate 140(g_tTex3di4) DescriptorSet 0
+ Decorate 143(g_tTex3du4) DescriptorSet 0
+ Decorate 146(g_tTexcdf4) DescriptorSet 0
+ Decorate 149(g_tTexcdi4) DescriptorSet 0
+ Decorate 152(g_tTexcdu4) DescriptorSet 0
+ Decorate 155(g_tTexcdf4a) DescriptorSet 0
+ Decorate 158(g_tTexcdi4a) DescriptorSet 0
+ Decorate 161(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -422,51 +454,55 @@
103: 97(fvec4) ConstantComposite 102 102 102 102
104: TypePointer Function 97(fvec4)
106: 26(int) Constant 1
- 110: TypeImage 6(float) 1D sampled format:Unknown
- 111: TypePointer UniformConstant 110
- 112(g_tTex1df4): 111(ptr) Variable UniformConstant
- 113: TypeImage 26(int) 1D sampled format:Unknown
- 114: TypePointer UniformConstant 113
- 115(g_tTex1di4): 114(ptr) Variable UniformConstant
- 116: TypeImage 43(int) 1D sampled format:Unknown
- 117: TypePointer UniformConstant 116
- 118(g_tTex1du4): 117(ptr) Variable UniformConstant
- 119: TypeImage 6(float) 2D sampled format:Unknown
- 120: TypePointer UniformConstant 119
- 121(g_tTex2df4): 120(ptr) Variable UniformConstant
- 122: TypeImage 26(int) 2D sampled format:Unknown
- 123: TypePointer UniformConstant 122
- 124(g_tTex2di4): 123(ptr) Variable UniformConstant
- 125: TypeImage 43(int) 2D sampled format:Unknown
- 126: TypePointer UniformConstant 125
- 127(g_tTex2du4): 126(ptr) Variable UniformConstant
- 128: TypeImage 6(float) 3D sampled format:Unknown
- 129: TypePointer UniformConstant 128
- 130(g_tTex3df4): 129(ptr) Variable UniformConstant
- 131: TypeImage 26(int) 3D sampled format:Unknown
- 132: TypePointer UniformConstant 131
- 133(g_tTex3di4): 132(ptr) Variable UniformConstant
- 134: TypeImage 43(int) 3D sampled format:Unknown
- 135: TypePointer UniformConstant 134
- 136(g_tTex3du4): 135(ptr) Variable UniformConstant
- 137: TypeImage 6(float) Cube sampled format:Unknown
- 138: TypePointer UniformConstant 137
- 139(g_tTexcdf4): 138(ptr) Variable UniformConstant
- 140: TypeImage 26(int) Cube sampled format:Unknown
- 141: TypePointer UniformConstant 140
- 142(g_tTexcdi4): 141(ptr) Variable UniformConstant
- 143: TypeImage 43(int) Cube sampled format:Unknown
- 144: TypePointer UniformConstant 143
- 145(g_tTexcdu4): 144(ptr) Variable UniformConstant
- 146: TypeImage 6(float) Cube array sampled format:Unknown
- 147: TypePointer UniformConstant 146
-148(g_tTexcdf4a): 147(ptr) Variable UniformConstant
- 149: TypeImage 26(int) Cube array sampled format:Unknown
- 150: TypePointer UniformConstant 149
-151(g_tTexcdi4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 43(int) Cube array sampled format:Unknown
- 153: TypePointer UniformConstant 152
-154(g_tTexcdu4a): 153(ptr) Variable UniformConstant
+ 108: TypePointer Output 97(fvec4)
+ 109(Color): 108(ptr) Variable Output
+ 112: TypePointer Output 6(float)
+ 113(Depth): 112(ptr) Variable Output
+ 117: TypeImage 6(float) 1D sampled format:Unknown
+ 118: TypePointer UniformConstant 117
+ 119(g_tTex1df4): 118(ptr) Variable UniformConstant
+ 120: TypeImage 26(int) 1D sampled format:Unknown
+ 121: TypePointer UniformConstant 120
+ 122(g_tTex1di4): 121(ptr) Variable UniformConstant
+ 123: TypeImage 43(int) 1D sampled format:Unknown
+ 124: TypePointer UniformConstant 123
+ 125(g_tTex1du4): 124(ptr) Variable UniformConstant
+ 126: TypeImage 6(float) 2D sampled format:Unknown
+ 127: TypePointer UniformConstant 126
+ 128(g_tTex2df4): 127(ptr) Variable UniformConstant
+ 129: TypeImage 26(int) 2D sampled format:Unknown
+ 130: TypePointer UniformConstant 129
+ 131(g_tTex2di4): 130(ptr) Variable UniformConstant
+ 132: TypeImage 43(int) 2D sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+ 134(g_tTex2du4): 133(ptr) Variable UniformConstant
+ 135: TypeImage 6(float) 3D sampled format:Unknown
+ 136: TypePointer UniformConstant 135
+ 137(g_tTex3df4): 136(ptr) Variable UniformConstant
+ 138: TypeImage 26(int) 3D sampled format:Unknown
+ 139: TypePointer UniformConstant 138
+ 140(g_tTex3di4): 139(ptr) Variable UniformConstant
+ 141: TypeImage 43(int) 3D sampled format:Unknown
+ 142: TypePointer UniformConstant 141
+ 143(g_tTex3du4): 142(ptr) Variable UniformConstant
+ 144: TypeImage 6(float) Cube sampled format:Unknown
+ 145: TypePointer UniformConstant 144
+ 146(g_tTexcdf4): 145(ptr) Variable UniformConstant
+ 147: TypeImage 26(int) Cube sampled format:Unknown
+ 148: TypePointer UniformConstant 147
+ 149(g_tTexcdi4): 148(ptr) Variable UniformConstant
+ 150: TypeImage 43(int) Cube sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+ 152(g_tTexcdu4): 151(ptr) Variable UniformConstant
+ 153: TypeImage 6(float) Cube array sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+155(g_tTexcdf4a): 154(ptr) Variable UniformConstant
+ 156: TypeImage 26(int) Cube array sampled format:Unknown
+ 157: TypePointer UniformConstant 156
+158(g_tTexcdi4a): 157(ptr) Variable UniformConstant
+ 159: TypeImage 43(int) Cube array sampled format:Unknown
+ 160: TypePointer UniformConstant 159
+161(g_tTexcdu4a): 160(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r11): 7(ptr) Variable Function
@@ -522,6 +558,11 @@
Store 105 103
107: 7(ptr) AccessChain 100(psout) 106
Store 107 102
- 108:98(PS_OUTPUT) Load 100(psout)
- ReturnValue 108
+ 110: 104(ptr) AccessChain 100(psout) 101
+ 111: 97(fvec4) Load 110
+ Store 109(Color) 111
+ 114: 7(ptr) AccessChain 100(psout) 106
+ 115: 6(float) Load 114
+ Store 113(Depth) 115
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index c54e2d5..949f7f2 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:61 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -151,7 +151,7 @@
0:54 0.000000
0:56 move second child to first child (temp 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
-0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 Constant:
@@ -160,14 +160,27 @@
0:56 1.000000
0:56 1.000000
0:57 move second child to first child (temp float)
-0:57 Depth: direct index for structure (temp float FragDepth)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 Depth: direct index for structure (temp float)
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 1 (const int)
0:57 Constant:
0:57 1.000000
-0:59 Branch: Return with expression
-0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:59 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:59 Color: direct index for structure (temp 4-component vector of float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 0 (const int)
+0:59 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:59 Depth: direct index for structure (temp float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 1 (const int)
+0:59 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -191,6 +204,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -199,7 +214,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:61 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -348,7 +363,7 @@
0:54 0.000000
0:56 move second child to first child (temp 4-component vector of float)
0:56 Color: direct index for structure (temp 4-component vector of float)
-0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 Constant:
@@ -357,14 +372,27 @@
0:56 1.000000
0:56 1.000000
0:57 move second child to first child (temp float)
-0:57 Depth: direct index for structure (temp float FragDepth)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 Depth: direct index for structure (temp float)
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 1 (const int)
0:57 Constant:
0:57 1.000000
-0:59 Branch: Return with expression
-0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:59 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:59 Color: direct index for structure (temp 4-component vector of float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 0 (const int)
+0:59 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:59 Depth: direct index for structure (temp float)
+0:59 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:59 Constant:
+0:59 1 (const int)
+0:59 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -388,19 +416,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 178
+// Id's are bound by 185
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 141 145
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r10"
Name 11 "g_tTex1df4a"
@@ -425,18 +454,20 @@
MemberName 130(PS_OUTPUT) 0 "Color"
MemberName 130(PS_OUTPUT) 1 "Depth"
Name 132 "psout"
- Name 144 "g_tTex1df4"
- Name 147 "g_tTex1di4"
- Name 150 "g_tTex1du4"
- Name 153 "g_tTex2df4"
- Name 156 "g_tTex2di4"
- Name 159 "g_tTex2du4"
- Name 162 "g_tTex3df4"
- Name 165 "g_tTex3di4"
- Name 168 "g_tTex3du4"
- Name 171 "g_tTexcdf4"
- Name 174 "g_tTexcdi4"
- Name 177 "g_tTexcdu4"
+ Name 141 "Color"
+ Name 145 "Depth"
+ Name 151 "g_tTex1df4"
+ Name 154 "g_tTex1di4"
+ Name 157 "g_tTex1du4"
+ Name 160 "g_tTex2df4"
+ Name 163 "g_tTex2di4"
+ Name 166 "g_tTex2du4"
+ Name 169 "g_tTex3df4"
+ Name 172 "g_tTex3di4"
+ Name 175 "g_tTex3du4"
+ Name 178 "g_tTexcdf4"
+ Name 181 "g_tTexcdi4"
+ Name 184 "g_tTexcdu4"
Decorate 11(g_tTex1df4a) DescriptorSet 0
Decorate 15(g_sSamp) DescriptorSet 0
Decorate 15(g_sSamp) Binding 0
@@ -448,20 +479,21 @@
Decorate 97(g_tTexcdf4a) DescriptorSet 0
Decorate 111(g_tTexcdi4a) DescriptorSet 0
Decorate 122(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 130(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 144(g_tTex1df4) DescriptorSet 0
- Decorate 144(g_tTex1df4) Binding 0
- Decorate 147(g_tTex1di4) DescriptorSet 0
- Decorate 150(g_tTex1du4) DescriptorSet 0
- Decorate 153(g_tTex2df4) DescriptorSet 0
- Decorate 156(g_tTex2di4) DescriptorSet 0
- Decorate 159(g_tTex2du4) DescriptorSet 0
- Decorate 162(g_tTex3df4) DescriptorSet 0
- Decorate 165(g_tTex3di4) DescriptorSet 0
- Decorate 168(g_tTex3du4) DescriptorSet 0
- Decorate 171(g_tTexcdf4) DescriptorSet 0
- Decorate 174(g_tTexcdi4) DescriptorSet 0
- Decorate 177(g_tTexcdu4) DescriptorSet 0
+ Decorate 141(Color) Location 0
+ Decorate 145(Depth) BuiltIn FragDepth
+ Decorate 151(g_tTex1df4) DescriptorSet 0
+ Decorate 151(g_tTex1df4) Binding 0
+ Decorate 154(g_tTex1di4) DescriptorSet 0
+ Decorate 157(g_tTex1du4) DescriptorSet 0
+ Decorate 160(g_tTex2df4) DescriptorSet 0
+ Decorate 163(g_tTex2di4) DescriptorSet 0
+ Decorate 166(g_tTex2du4) DescriptorSet 0
+ Decorate 169(g_tTex3df4) DescriptorSet 0
+ Decorate 172(g_tTex3di4) DescriptorSet 0
+ Decorate 175(g_tTex3du4) DescriptorSet 0
+ Decorate 178(g_tTexcdf4) DescriptorSet 0
+ Decorate 181(g_tTexcdi4) DescriptorSet 0
+ Decorate 184(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -535,42 +567,46 @@
135: 103(fvec4) ConstantComposite 134 134 134 134
136: TypePointer Function 103(fvec4)
138: 30(int) Constant 1
- 142: TypeImage 6(float) 1D sampled format:Unknown
- 143: TypePointer UniformConstant 142
- 144(g_tTex1df4): 143(ptr) Variable UniformConstant
- 145: TypeImage 30(int) 1D sampled format:Unknown
- 146: TypePointer UniformConstant 145
- 147(g_tTex1di4): 146(ptr) Variable UniformConstant
- 148: TypeImage 43(int) 1D sampled format:Unknown
- 149: TypePointer UniformConstant 148
- 150(g_tTex1du4): 149(ptr) Variable UniformConstant
- 151: TypeImage 6(float) 2D sampled format:Unknown
- 152: TypePointer UniformConstant 151
- 153(g_tTex2df4): 152(ptr) Variable UniformConstant
- 154: TypeImage 30(int) 2D sampled format:Unknown
- 155: TypePointer UniformConstant 154
- 156(g_tTex2di4): 155(ptr) Variable UniformConstant
- 157: TypeImage 43(int) 2D sampled format:Unknown
- 158: TypePointer UniformConstant 157
- 159(g_tTex2du4): 158(ptr) Variable UniformConstant
- 160: TypeImage 6(float) 3D sampled format:Unknown
- 161: TypePointer UniformConstant 160
- 162(g_tTex3df4): 161(ptr) Variable UniformConstant
- 163: TypeImage 30(int) 3D sampled format:Unknown
- 164: TypePointer UniformConstant 163
- 165(g_tTex3di4): 164(ptr) Variable UniformConstant
- 166: TypeImage 43(int) 3D sampled format:Unknown
- 167: TypePointer UniformConstant 166
- 168(g_tTex3du4): 167(ptr) Variable UniformConstant
- 169: TypeImage 6(float) Cube sampled format:Unknown
- 170: TypePointer UniformConstant 169
- 171(g_tTexcdf4): 170(ptr) Variable UniformConstant
- 172: TypeImage 30(int) Cube sampled format:Unknown
- 173: TypePointer UniformConstant 172
- 174(g_tTexcdi4): 173(ptr) Variable UniformConstant
- 175: TypeImage 43(int) Cube sampled format:Unknown
- 176: TypePointer UniformConstant 175
- 177(g_tTexcdu4): 176(ptr) Variable UniformConstant
+ 140: TypePointer Output 103(fvec4)
+ 141(Color): 140(ptr) Variable Output
+ 144: TypePointer Output 6(float)
+ 145(Depth): 144(ptr) Variable Output
+ 149: TypeImage 6(float) 1D sampled format:Unknown
+ 150: TypePointer UniformConstant 149
+ 151(g_tTex1df4): 150(ptr) Variable UniformConstant
+ 152: TypeImage 30(int) 1D sampled format:Unknown
+ 153: TypePointer UniformConstant 152
+ 154(g_tTex1di4): 153(ptr) Variable UniformConstant
+ 155: TypeImage 43(int) 1D sampled format:Unknown
+ 156: TypePointer UniformConstant 155
+ 157(g_tTex1du4): 156(ptr) Variable UniformConstant
+ 158: TypeImage 6(float) 2D sampled format:Unknown
+ 159: TypePointer UniformConstant 158
+ 160(g_tTex2df4): 159(ptr) Variable UniformConstant
+ 161: TypeImage 30(int) 2D sampled format:Unknown
+ 162: TypePointer UniformConstant 161
+ 163(g_tTex2di4): 162(ptr) Variable UniformConstant
+ 164: TypeImage 43(int) 2D sampled format:Unknown
+ 165: TypePointer UniformConstant 164
+ 166(g_tTex2du4): 165(ptr) Variable UniformConstant
+ 167: TypeImage 6(float) 3D sampled format:Unknown
+ 168: TypePointer UniformConstant 167
+ 169(g_tTex3df4): 168(ptr) Variable UniformConstant
+ 170: TypeImage 30(int) 3D sampled format:Unknown
+ 171: TypePointer UniformConstant 170
+ 172(g_tTex3di4): 171(ptr) Variable UniformConstant
+ 173: TypeImage 43(int) 3D sampled format:Unknown
+ 174: TypePointer UniformConstant 173
+ 175(g_tTex3du4): 174(ptr) Variable UniformConstant
+ 176: TypeImage 6(float) Cube sampled format:Unknown
+ 177: TypePointer UniformConstant 176
+ 178(g_tTexcdf4): 177(ptr) Variable UniformConstant
+ 179: TypeImage 30(int) Cube sampled format:Unknown
+ 180: TypePointer UniformConstant 179
+ 181(g_tTexcdi4): 180(ptr) Variable UniformConstant
+ 182: TypeImage 43(int) Cube sampled format:Unknown
+ 183: TypePointer UniformConstant 182
+ 184(g_tTexcdu4): 183(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r10): 7(ptr) Variable Function
@@ -647,6 +683,11 @@
Store 137 135
139: 7(ptr) AccessChain 132(psout) 138
Store 139 134
- 140:130(PS_OUTPUT) Load 132(psout)
- ReturnValue 140
+ 142: 136(ptr) AccessChain 132(psout) 133
+ 143: 103(fvec4) Load 142
+ Store 141(Color) 143
+ 146: 7(ptr) AccessChain 132(psout) 138
+ 147: 6(float) Load 146
+ Store 145(Depth) 147
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index 1fbdb48..5f83499 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:62 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -142,7 +142,7 @@
0:55 0.000000
0:57 move second child to first child (temp 4-component vector of float)
0:57 Color: direct index for structure (temp 4-component vector of float)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 0 (const int)
0:57 Constant:
@@ -151,14 +151,27 @@
0:57 1.000000
0:57 1.000000
0:58 move second child to first child (temp float)
-0:58 Depth: direct index for structure (temp float FragDepth)
-0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:58 Depth: direct index for structure (temp float)
+0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:58 Constant:
0:58 1 (const int)
0:58 Constant:
0:58 1.000000
-0:60 Branch: Return with expression
-0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:60 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:60 Color: direct index for structure (temp 4-component vector of float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 0 (const int)
+0:60 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:60 Depth: direct index for structure (temp float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 1 (const int)
+0:60 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -182,6 +195,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -190,7 +205,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:62 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -330,7 +345,7 @@
0:55 0.000000
0:57 move second child to first child (temp 4-component vector of float)
0:57 Color: direct index for structure (temp 4-component vector of float)
-0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:57 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:57 Constant:
0:57 0 (const int)
0:57 Constant:
@@ -339,14 +354,27 @@
0:57 1.000000
0:57 1.000000
0:58 move second child to first child (temp float)
-0:58 Depth: direct index for structure (temp float FragDepth)
-0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:58 Depth: direct index for structure (temp float)
+0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:58 Constant:
0:58 1 (const int)
0:58 Constant:
0:58 1.000000
-0:60 Branch: Return with expression
-0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:60 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:60 Color: direct index for structure (temp 4-component vector of float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 0 (const int)
+0:60 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:60 Depth: direct index for structure (temp float)
+0:60 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:60 Constant:
+0:60 1 (const int)
+0:60 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -370,19 +398,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 176
+// Id's are bound by 183
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 139 143
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r00"
Name 11 "g_tTex1df4"
@@ -407,18 +436,20 @@
MemberName 128(PS_OUTPUT) 0 "Color"
MemberName 128(PS_OUTPUT) 1 "Depth"
Name 130 "psout"
- Name 142 "g_tTex3df4"
- Name 145 "g_tTex3di4"
- Name 148 "g_tTex3du4"
- Name 151 "g_tTex1df4a"
- Name 154 "g_tTex1di4a"
- Name 157 "g_tTex1du4a"
- Name 160 "g_tTex2df4a"
- Name 163 "g_tTex2di4a"
- Name 166 "g_tTex2du4a"
- Name 169 "g_tTexcdf4a"
- Name 172 "g_tTexcdi4a"
- Name 175 "g_tTexcdu4a"
+ Name 139 "Color"
+ Name 143 "Depth"
+ Name 149 "g_tTex3df4"
+ Name 152 "g_tTex3di4"
+ Name 155 "g_tTex3du4"
+ Name 158 "g_tTex1df4a"
+ Name 161 "g_tTex1di4a"
+ Name 164 "g_tTex1du4a"
+ Name 167 "g_tTex2df4a"
+ Name 170 "g_tTex2di4a"
+ Name 173 "g_tTex2du4a"
+ Name 176 "g_tTexcdf4a"
+ Name 179 "g_tTexcdi4a"
+ Name 182 "g_tTexcdu4a"
Decorate 11(g_tTex1df4) DescriptorSet 0
Decorate 11(g_tTex1df4) Binding 0
Decorate 15(g_sSamp) DescriptorSet 0
@@ -431,19 +462,20 @@
Decorate 91(g_tTexcdf4) DescriptorSet 0
Decorate 106(g_tTexcdi4) DescriptorSet 0
Decorate 118(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 128(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 142(g_tTex3df4) DescriptorSet 0
- Decorate 145(g_tTex3di4) DescriptorSet 0
- Decorate 148(g_tTex3du4) DescriptorSet 0
- Decorate 151(g_tTex1df4a) DescriptorSet 0
- Decorate 154(g_tTex1di4a) DescriptorSet 0
- Decorate 157(g_tTex1du4a) DescriptorSet 0
- Decorate 160(g_tTex2df4a) DescriptorSet 0
- Decorate 163(g_tTex2di4a) DescriptorSet 0
- Decorate 166(g_tTex2du4a) DescriptorSet 0
- Decorate 169(g_tTexcdf4a) DescriptorSet 0
- Decorate 172(g_tTexcdi4a) DescriptorSet 0
- Decorate 175(g_tTexcdu4a) DescriptorSet 0
+ Decorate 139(Color) Location 0
+ Decorate 143(Depth) BuiltIn FragDepth
+ Decorate 149(g_tTex3df4) DescriptorSet 0
+ Decorate 152(g_tTex3di4) DescriptorSet 0
+ Decorate 155(g_tTex3du4) DescriptorSet 0
+ Decorate 158(g_tTex1df4a) DescriptorSet 0
+ Decorate 161(g_tTex1di4a) DescriptorSet 0
+ Decorate 164(g_tTex1du4a) DescriptorSet 0
+ Decorate 167(g_tTex2df4a) DescriptorSet 0
+ Decorate 170(g_tTex2di4a) DescriptorSet 0
+ Decorate 173(g_tTex2du4a) DescriptorSet 0
+ Decorate 176(g_tTexcdf4a) DescriptorSet 0
+ Decorate 179(g_tTexcdi4a) DescriptorSet 0
+ Decorate 182(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -515,42 +547,46 @@
133: 127(fvec4) ConstantComposite 132 132 132 132
134: TypePointer Function 127(fvec4)
136: 26(int) Constant 1
- 140: TypeImage 6(float) 3D sampled format:Unknown
- 141: TypePointer UniformConstant 140
- 142(g_tTex3df4): 141(ptr) Variable UniformConstant
- 143: TypeImage 26(int) 3D sampled format:Unknown
- 144: TypePointer UniformConstant 143
- 145(g_tTex3di4): 144(ptr) Variable UniformConstant
- 146: TypeImage 38(int) 3D sampled format:Unknown
- 147: TypePointer UniformConstant 146
- 148(g_tTex3du4): 147(ptr) Variable UniformConstant
- 149: TypeImage 6(float) 1D array sampled format:Unknown
- 150: TypePointer UniformConstant 149
-151(g_tTex1df4a): 150(ptr) Variable UniformConstant
- 152: TypeImage 26(int) 1D array sampled format:Unknown
- 153: TypePointer UniformConstant 152
-154(g_tTex1di4a): 153(ptr) Variable UniformConstant
- 155: TypeImage 38(int) 1D array sampled format:Unknown
- 156: TypePointer UniformConstant 155
-157(g_tTex1du4a): 156(ptr) Variable UniformConstant
- 158: TypeImage 6(float) 2D array sampled format:Unknown
- 159: TypePointer UniformConstant 158
-160(g_tTex2df4a): 159(ptr) Variable UniformConstant
- 161: TypeImage 26(int) 2D array sampled format:Unknown
- 162: TypePointer UniformConstant 161
-163(g_tTex2di4a): 162(ptr) Variable UniformConstant
- 164: TypeImage 38(int) 2D array sampled format:Unknown
- 165: TypePointer UniformConstant 164
-166(g_tTex2du4a): 165(ptr) Variable UniformConstant
- 167: TypeImage 6(float) Cube array sampled format:Unknown
- 168: TypePointer UniformConstant 167
-169(g_tTexcdf4a): 168(ptr) Variable UniformConstant
- 170: TypeImage 26(int) Cube array sampled format:Unknown
- 171: TypePointer UniformConstant 170
-172(g_tTexcdi4a): 171(ptr) Variable UniformConstant
- 173: TypeImage 38(int) Cube array sampled format:Unknown
- 174: TypePointer UniformConstant 173
-175(g_tTexcdu4a): 174(ptr) Variable UniformConstant
+ 138: TypePointer Output 127(fvec4)
+ 139(Color): 138(ptr) Variable Output
+ 142: TypePointer Output 6(float)
+ 143(Depth): 142(ptr) Variable Output
+ 147: TypeImage 6(float) 3D sampled format:Unknown
+ 148: TypePointer UniformConstant 147
+ 149(g_tTex3df4): 148(ptr) Variable UniformConstant
+ 150: TypeImage 26(int) 3D sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+ 152(g_tTex3di4): 151(ptr) Variable UniformConstant
+ 153: TypeImage 38(int) 3D sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+ 155(g_tTex3du4): 154(ptr) Variable UniformConstant
+ 156: TypeImage 6(float) 1D array sampled format:Unknown
+ 157: TypePointer UniformConstant 156
+158(g_tTex1df4a): 157(ptr) Variable UniformConstant
+ 159: TypeImage 26(int) 1D array sampled format:Unknown
+ 160: TypePointer UniformConstant 159
+161(g_tTex1di4a): 160(ptr) Variable UniformConstant
+ 162: TypeImage 38(int) 1D array sampled format:Unknown
+ 163: TypePointer UniformConstant 162
+164(g_tTex1du4a): 163(ptr) Variable UniformConstant
+ 165: TypeImage 6(float) 2D array sampled format:Unknown
+ 166: TypePointer UniformConstant 165
+167(g_tTex2df4a): 166(ptr) Variable UniformConstant
+ 168: TypeImage 26(int) 2D array sampled format:Unknown
+ 169: TypePointer UniformConstant 168
+170(g_tTex2di4a): 169(ptr) Variable UniformConstant
+ 171: TypeImage 38(int) 2D array sampled format:Unknown
+ 172: TypePointer UniformConstant 171
+173(g_tTex2du4a): 172(ptr) Variable UniformConstant
+ 174: TypeImage 6(float) Cube array sampled format:Unknown
+ 175: TypePointer UniformConstant 174
+176(g_tTexcdf4a): 175(ptr) Variable UniformConstant
+ 177: TypeImage 26(int) Cube array sampled format:Unknown
+ 178: TypePointer UniformConstant 177
+179(g_tTexcdi4a): 178(ptr) Variable UniformConstant
+ 180: TypeImage 38(int) Cube array sampled format:Unknown
+ 181: TypePointer UniformConstant 180
+182(g_tTexcdu4a): 181(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r00): 7(ptr) Variable Function
@@ -627,6 +663,11 @@
Store 135 133
137: 7(ptr) AccessChain 130(psout) 136
Store 137 132
- 138:128(PS_OUTPUT) Load 130(psout)
- ReturnValue 138
+ 140: 134(ptr) AccessChain 130(psout) 131
+ 141: 127(fvec4) Load 140
+ Store 139(Color) 141
+ 144: 7(ptr) AccessChain 130(psout) 136
+ 145: 6(float) Load 144
+ Store 143(Depth) 145
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index 68d07d5..ceb1415 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:67 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -109,7 +109,7 @@
0:? 3 (const int)
0:62 move second child to first child (temp 4-component vector of float)
0:62 Color: direct index for structure (temp 4-component vector of float)
-0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:62 Constant:
0:62 0 (const int)
0:62 Constant:
@@ -118,14 +118,27 @@
0:62 1.000000
0:62 1.000000
0:63 move second child to first child (temp float)
-0:63 Depth: direct index for structure (temp float FragDepth)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 Depth: direct index for structure (temp float)
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1.000000
-0:65 Branch: Return with expression
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:65 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:65 Color: direct index for structure (temp 4-component vector of float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 0 (const int)
+0:65 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:65 Depth: direct index for structure (temp float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 1 (const int)
+0:65 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -149,6 +162,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -157,7 +172,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:67 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -264,7 +279,7 @@
0:? 3 (const int)
0:62 move second child to first child (temp 4-component vector of float)
0:62 Color: direct index for structure (temp 4-component vector of float)
-0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:62 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:62 Constant:
0:62 0 (const int)
0:62 Constant:
@@ -273,14 +288,27 @@
0:62 1.000000
0:62 1.000000
0:63 move second child to first child (temp float)
-0:63 Depth: direct index for structure (temp float FragDepth)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 Depth: direct index for structure (temp float)
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1.000000
-0:65 Branch: Return with expression
-0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:65 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:65 Color: direct index for structure (temp 4-component vector of float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 0 (const int)
+0:65 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:65 Depth: direct index for structure (temp float)
+0:65 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:65 Constant:
+0:65 1 (const int)
+0:65 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -304,19 +332,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 150
+// Id's are bound by 157
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 104 108
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r01"
Name 11 "g_tTex1df4"
@@ -335,21 +364,23 @@
MemberName 93(PS_OUTPUT) 0 "Color"
MemberName 93(PS_OUTPUT) 1 "Depth"
Name 95 "psout"
- Name 107 "g_tTex3df4"
- Name 110 "g_tTex3di4"
- Name 113 "g_tTex3du4"
- Name 116 "g_tTexcdf4"
- Name 119 "g_tTexcdi4"
- Name 122 "g_tTexcdu4"
- Name 125 "g_tTex1df4a"
- Name 128 "g_tTex1di4a"
- Name 131 "g_tTex1du4a"
- Name 134 "g_tTex2df4a"
- Name 137 "g_tTex2di4a"
- Name 140 "g_tTex2du4a"
- Name 143 "g_tTexcdf4a"
- Name 146 "g_tTexcdi4a"
- Name 149 "g_tTexcdu4a"
+ Name 104 "Color"
+ Name 108 "Depth"
+ Name 114 "g_tTex3df4"
+ Name 117 "g_tTex3di4"
+ Name 120 "g_tTex3du4"
+ Name 123 "g_tTexcdf4"
+ Name 126 "g_tTexcdi4"
+ Name 129 "g_tTexcdu4"
+ Name 132 "g_tTex1df4a"
+ Name 135 "g_tTex1di4a"
+ Name 138 "g_tTex1du4a"
+ Name 141 "g_tTex2df4a"
+ Name 144 "g_tTex2di4a"
+ Name 147 "g_tTex2du4a"
+ Name 150 "g_tTexcdf4a"
+ Name 153 "g_tTexcdi4a"
+ Name 156 "g_tTexcdu4a"
Decorate 11(g_tTex1df4) DescriptorSet 0
Decorate 11(g_tTex1df4) Binding 0
Decorate 15(g_sSamp) DescriptorSet 0
@@ -359,22 +390,23 @@
Decorate 53(g_tTex2df4) DescriptorSet 0
Decorate 71(g_tTex2di4) DescriptorSet 0
Decorate 83(g_tTex2du4) DescriptorSet 0
- MemberDecorate 93(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 107(g_tTex3df4) DescriptorSet 0
- Decorate 110(g_tTex3di4) DescriptorSet 0
- Decorate 113(g_tTex3du4) DescriptorSet 0
- Decorate 116(g_tTexcdf4) DescriptorSet 0
- Decorate 119(g_tTexcdi4) DescriptorSet 0
- Decorate 122(g_tTexcdu4) DescriptorSet 0
- Decorate 125(g_tTex1df4a) DescriptorSet 0
- Decorate 128(g_tTex1di4a) DescriptorSet 0
- Decorate 131(g_tTex1du4a) DescriptorSet 0
- Decorate 134(g_tTex2df4a) DescriptorSet 0
- Decorate 137(g_tTex2di4a) DescriptorSet 0
- Decorate 140(g_tTex2du4a) DescriptorSet 0
- Decorate 143(g_tTexcdf4a) DescriptorSet 0
- Decorate 146(g_tTexcdi4a) DescriptorSet 0
- Decorate 149(g_tTexcdu4a) DescriptorSet 0
+ Decorate 104(Color) Location 0
+ Decorate 108(Depth) BuiltIn FragDepth
+ Decorate 114(g_tTex3df4) DescriptorSet 0
+ Decorate 117(g_tTex3di4) DescriptorSet 0
+ Decorate 120(g_tTex3du4) DescriptorSet 0
+ Decorate 123(g_tTexcdf4) DescriptorSet 0
+ Decorate 126(g_tTexcdi4) DescriptorSet 0
+ Decorate 129(g_tTexcdu4) DescriptorSet 0
+ Decorate 132(g_tTex1df4a) DescriptorSet 0
+ Decorate 135(g_tTex1di4a) DescriptorSet 0
+ Decorate 138(g_tTex1du4a) DescriptorSet 0
+ Decorate 141(g_tTex2df4a) DescriptorSet 0
+ Decorate 144(g_tTex2di4a) DescriptorSet 0
+ Decorate 147(g_tTex2du4a) DescriptorSet 0
+ Decorate 150(g_tTexcdf4a) DescriptorSet 0
+ Decorate 153(g_tTexcdi4a) DescriptorSet 0
+ Decorate 156(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -432,51 +464,55 @@
98: 92(fvec4) ConstantComposite 97 97 97 97
99: TypePointer Function 92(fvec4)
101: 23(int) Constant 1
- 105: TypeImage 6(float) 3D sampled format:Unknown
- 106: TypePointer UniformConstant 105
- 107(g_tTex3df4): 106(ptr) Variable UniformConstant
- 108: TypeImage 23(int) 3D sampled format:Unknown
- 109: TypePointer UniformConstant 108
- 110(g_tTex3di4): 109(ptr) Variable UniformConstant
- 111: TypeImage 39(int) 3D sampled format:Unknown
- 112: TypePointer UniformConstant 111
- 113(g_tTex3du4): 112(ptr) Variable UniformConstant
- 114: TypeImage 6(float) Cube sampled format:Unknown
- 115: TypePointer UniformConstant 114
- 116(g_tTexcdf4): 115(ptr) Variable UniformConstant
- 117: TypeImage 23(int) Cube sampled format:Unknown
- 118: TypePointer UniformConstant 117
- 119(g_tTexcdi4): 118(ptr) Variable UniformConstant
- 120: TypeImage 39(int) Cube sampled format:Unknown
- 121: TypePointer UniformConstant 120
- 122(g_tTexcdu4): 121(ptr) Variable UniformConstant
- 123: TypeImage 6(float) 1D array sampled format:Unknown
- 124: TypePointer UniformConstant 123
-125(g_tTex1df4a): 124(ptr) Variable UniformConstant
- 126: TypeImage 23(int) 1D array sampled format:Unknown
- 127: TypePointer UniformConstant 126
-128(g_tTex1di4a): 127(ptr) Variable UniformConstant
- 129: TypeImage 39(int) 1D array sampled format:Unknown
- 130: TypePointer UniformConstant 129
-131(g_tTex1du4a): 130(ptr) Variable UniformConstant
- 132: TypeImage 6(float) 2D array sampled format:Unknown
- 133: TypePointer UniformConstant 132
-134(g_tTex2df4a): 133(ptr) Variable UniformConstant
- 135: TypeImage 23(int) 2D array sampled format:Unknown
- 136: TypePointer UniformConstant 135
-137(g_tTex2di4a): 136(ptr) Variable UniformConstant
- 138: TypeImage 39(int) 2D array sampled format:Unknown
- 139: TypePointer UniformConstant 138
-140(g_tTex2du4a): 139(ptr) Variable UniformConstant
- 141: TypeImage 6(float) Cube array sampled format:Unknown
- 142: TypePointer UniformConstant 141
-143(g_tTexcdf4a): 142(ptr) Variable UniformConstant
- 144: TypeImage 23(int) Cube array sampled format:Unknown
- 145: TypePointer UniformConstant 144
-146(g_tTexcdi4a): 145(ptr) Variable UniformConstant
- 147: TypeImage 39(int) Cube array sampled format:Unknown
- 148: TypePointer UniformConstant 147
-149(g_tTexcdu4a): 148(ptr) Variable UniformConstant
+ 103: TypePointer Output 92(fvec4)
+ 104(Color): 103(ptr) Variable Output
+ 107: TypePointer Output 6(float)
+ 108(Depth): 107(ptr) Variable Output
+ 112: TypeImage 6(float) 3D sampled format:Unknown
+ 113: TypePointer UniformConstant 112
+ 114(g_tTex3df4): 113(ptr) Variable UniformConstant
+ 115: TypeImage 23(int) 3D sampled format:Unknown
+ 116: TypePointer UniformConstant 115
+ 117(g_tTex3di4): 116(ptr) Variable UniformConstant
+ 118: TypeImage 39(int) 3D sampled format:Unknown
+ 119: TypePointer UniformConstant 118
+ 120(g_tTex3du4): 119(ptr) Variable UniformConstant
+ 121: TypeImage 6(float) Cube sampled format:Unknown
+ 122: TypePointer UniformConstant 121
+ 123(g_tTexcdf4): 122(ptr) Variable UniformConstant
+ 124: TypeImage 23(int) Cube sampled format:Unknown
+ 125: TypePointer UniformConstant 124
+ 126(g_tTexcdi4): 125(ptr) Variable UniformConstant
+ 127: TypeImage 39(int) Cube sampled format:Unknown
+ 128: TypePointer UniformConstant 127
+ 129(g_tTexcdu4): 128(ptr) Variable UniformConstant
+ 130: TypeImage 6(float) 1D array sampled format:Unknown
+ 131: TypePointer UniformConstant 130
+132(g_tTex1df4a): 131(ptr) Variable UniformConstant
+ 133: TypeImage 23(int) 1D array sampled format:Unknown
+ 134: TypePointer UniformConstant 133
+135(g_tTex1di4a): 134(ptr) Variable UniformConstant
+ 136: TypeImage 39(int) 1D array sampled format:Unknown
+ 137: TypePointer UniformConstant 136
+138(g_tTex1du4a): 137(ptr) Variable UniformConstant
+ 139: TypeImage 6(float) 2D array sampled format:Unknown
+ 140: TypePointer UniformConstant 139
+141(g_tTex2df4a): 140(ptr) Variable UniformConstant
+ 142: TypeImage 23(int) 2D array sampled format:Unknown
+ 143: TypePointer UniformConstant 142
+144(g_tTex2di4a): 143(ptr) Variable UniformConstant
+ 145: TypeImage 39(int) 2D array sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+147(g_tTex2du4a): 146(ptr) Variable UniformConstant
+ 148: TypeImage 6(float) Cube array sampled format:Unknown
+ 149: TypePointer UniformConstant 148
+150(g_tTexcdf4a): 149(ptr) Variable UniformConstant
+ 151: TypeImage 23(int) Cube array sampled format:Unknown
+ 152: TypePointer UniformConstant 151
+153(g_tTexcdi4a): 152(ptr) Variable UniformConstant
+ 154: TypeImage 39(int) Cube array sampled format:Unknown
+ 155: TypePointer UniformConstant 154
+156(g_tTexcdu4a): 155(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r01): 7(ptr) Variable Function
@@ -529,6 +565,11 @@
Store 100 98
102: 7(ptr) AccessChain 95(psout) 101
Store 102 97
- 103:93(PS_OUTPUT) Load 95(psout)
- ReturnValue 103
+ 105: 99(ptr) AccessChain 95(psout) 96
+ 106: 92(fvec4) Load 105
+ Store 104(Color) 106
+ 109: 7(ptr) AccessChain 95(psout) 101
+ 110: 6(float) Load 109
+ Store 108(Depth) 110
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 627b023..ea32bce 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:68 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -115,7 +115,7 @@
0:? 3 (const int)
0:63 move second child to first child (temp 4-component vector of float)
0:63 Color: direct index for structure (temp 4-component vector of float)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
@@ -124,14 +124,27 @@
0:63 1.000000
0:63 1.000000
0:64 move second child to first child (temp float)
-0:64 Depth: direct index for structure (temp float FragDepth)
-0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:64 Depth: direct index for structure (temp float)
+0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:64 Constant:
0:64 1 (const int)
0:64 Constant:
0:64 1.000000
-0:66 Branch: Return with expression
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:66 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:66 Color: direct index for structure (temp 4-component vector of float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 0 (const int)
+0:66 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 1 (const int)
+0:66 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -155,6 +168,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -163,7 +178,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:68 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:38 Function Parameters:
0:? Sequence
0:42 Sequence
@@ -276,7 +291,7 @@
0:? 3 (const int)
0:63 move second child to first child (temp 4-component vector of float)
0:63 Color: direct index for structure (temp 4-component vector of float)
-0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:63 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
@@ -285,14 +300,27 @@
0:63 1.000000
0:63 1.000000
0:64 move second child to first child (temp float)
-0:64 Depth: direct index for structure (temp float FragDepth)
-0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:64 Depth: direct index for structure (temp float)
+0:64 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:64 Constant:
0:64 1 (const int)
0:64 Constant:
0:64 1.000000
-0:66 Branch: Return with expression
-0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:66 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:66 Color: direct index for structure (temp 4-component vector of float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 0 (const int)
+0:66 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:66 Depth: direct index for structure (temp float)
+0:66 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:66 Constant:
+0:66 1 (const int)
+0:66 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -316,19 +344,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 156
+// Id's are bound by 163
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 110 114
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 8 "r11"
Name 11 "g_tTex1df4a"
@@ -347,21 +376,23 @@
MemberName 99(PS_OUTPUT) 0 "Color"
MemberName 99(PS_OUTPUT) 1 "Depth"
Name 101 "psout"
- Name 113 "g_tTex1df4"
- Name 116 "g_tTex1di4"
- Name 119 "g_tTex1du4"
- Name 122 "g_tTex2df4"
- Name 125 "g_tTex2di4"
- Name 128 "g_tTex2du4"
- Name 131 "g_tTex3df4"
- Name 134 "g_tTex3di4"
- Name 137 "g_tTex3du4"
- Name 140 "g_tTexcdf4"
- Name 143 "g_tTexcdi4"
- Name 146 "g_tTexcdu4"
- Name 149 "g_tTexcdf4a"
- Name 152 "g_tTexcdi4a"
- Name 155 "g_tTexcdu4a"
+ Name 110 "Color"
+ Name 114 "Depth"
+ Name 120 "g_tTex1df4"
+ Name 123 "g_tTex1di4"
+ Name 126 "g_tTex1du4"
+ Name 129 "g_tTex2df4"
+ Name 132 "g_tTex2di4"
+ Name 135 "g_tTex2du4"
+ Name 138 "g_tTex3df4"
+ Name 141 "g_tTex3di4"
+ Name 144 "g_tTex3du4"
+ Name 147 "g_tTexcdf4"
+ Name 150 "g_tTexcdi4"
+ Name 153 "g_tTexcdu4"
+ Name 156 "g_tTexcdf4a"
+ Name 159 "g_tTexcdi4a"
+ Name 162 "g_tTexcdu4a"
Decorate 11(g_tTex1df4a) DescriptorSet 0
Decorate 15(g_sSamp) DescriptorSet 0
Decorate 15(g_sSamp) Binding 0
@@ -370,23 +401,24 @@
Decorate 59(g_tTex2df4a) DescriptorSet 0
Decorate 77(g_tTex2di4a) DescriptorSet 0
Decorate 89(g_tTex2du4a) DescriptorSet 0
- MemberDecorate 99(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 113(g_tTex1df4) DescriptorSet 0
- Decorate 113(g_tTex1df4) Binding 0
- Decorate 116(g_tTex1di4) DescriptorSet 0
- Decorate 119(g_tTex1du4) DescriptorSet 0
- Decorate 122(g_tTex2df4) DescriptorSet 0
- Decorate 125(g_tTex2di4) DescriptorSet 0
- Decorate 128(g_tTex2du4) DescriptorSet 0
- Decorate 131(g_tTex3df4) DescriptorSet 0
- Decorate 134(g_tTex3di4) DescriptorSet 0
- Decorate 137(g_tTex3du4) DescriptorSet 0
- Decorate 140(g_tTexcdf4) DescriptorSet 0
- Decorate 143(g_tTexcdi4) DescriptorSet 0
- Decorate 146(g_tTexcdu4) DescriptorSet 0
- Decorate 149(g_tTexcdf4a) DescriptorSet 0
- Decorate 152(g_tTexcdi4a) DescriptorSet 0
- Decorate 155(g_tTexcdu4a) DescriptorSet 0
+ Decorate 110(Color) Location 0
+ Decorate 114(Depth) BuiltIn FragDepth
+ Decorate 120(g_tTex1df4) DescriptorSet 0
+ Decorate 120(g_tTex1df4) Binding 0
+ Decorate 123(g_tTex1di4) DescriptorSet 0
+ Decorate 126(g_tTex1du4) DescriptorSet 0
+ Decorate 129(g_tTex2df4) DescriptorSet 0
+ Decorate 132(g_tTex2di4) DescriptorSet 0
+ Decorate 135(g_tTex2du4) DescriptorSet 0
+ Decorate 138(g_tTex3df4) DescriptorSet 0
+ Decorate 141(g_tTex3di4) DescriptorSet 0
+ Decorate 144(g_tTex3du4) DescriptorSet 0
+ Decorate 147(g_tTexcdf4) DescriptorSet 0
+ Decorate 150(g_tTexcdi4) DescriptorSet 0
+ Decorate 153(g_tTexcdu4) DescriptorSet 0
+ Decorate 156(g_tTexcdf4a) DescriptorSet 0
+ Decorate 159(g_tTexcdi4a) DescriptorSet 0
+ Decorate 162(g_tTexcdu4a) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -447,51 +479,55 @@
104: 98(fvec4) ConstantComposite 103 103 103 103
105: TypePointer Function 98(fvec4)
107: 27(int) Constant 1
- 111: TypeImage 6(float) 1D sampled format:Unknown
- 112: TypePointer UniformConstant 111
- 113(g_tTex1df4): 112(ptr) Variable UniformConstant
- 114: TypeImage 27(int) 1D sampled format:Unknown
- 115: TypePointer UniformConstant 114
- 116(g_tTex1di4): 115(ptr) Variable UniformConstant
- 117: TypeImage 44(int) 1D sampled format:Unknown
- 118: TypePointer UniformConstant 117
- 119(g_tTex1du4): 118(ptr) Variable UniformConstant
- 120: TypeImage 6(float) 2D sampled format:Unknown
- 121: TypePointer UniformConstant 120
- 122(g_tTex2df4): 121(ptr) Variable UniformConstant
- 123: TypeImage 27(int) 2D sampled format:Unknown
- 124: TypePointer UniformConstant 123
- 125(g_tTex2di4): 124(ptr) Variable UniformConstant
- 126: TypeImage 44(int) 2D sampled format:Unknown
- 127: TypePointer UniformConstant 126
- 128(g_tTex2du4): 127(ptr) Variable UniformConstant
- 129: TypeImage 6(float) 3D sampled format:Unknown
- 130: TypePointer UniformConstant 129
- 131(g_tTex3df4): 130(ptr) Variable UniformConstant
- 132: TypeImage 27(int) 3D sampled format:Unknown
- 133: TypePointer UniformConstant 132
- 134(g_tTex3di4): 133(ptr) Variable UniformConstant
- 135: TypeImage 44(int) 3D sampled format:Unknown
- 136: TypePointer UniformConstant 135
- 137(g_tTex3du4): 136(ptr) Variable UniformConstant
- 138: TypeImage 6(float) Cube sampled format:Unknown
- 139: TypePointer UniformConstant 138
- 140(g_tTexcdf4): 139(ptr) Variable UniformConstant
- 141: TypeImage 27(int) Cube sampled format:Unknown
- 142: TypePointer UniformConstant 141
- 143(g_tTexcdi4): 142(ptr) Variable UniformConstant
- 144: TypeImage 44(int) Cube sampled format:Unknown
- 145: TypePointer UniformConstant 144
- 146(g_tTexcdu4): 145(ptr) Variable UniformConstant
- 147: TypeImage 6(float) Cube array sampled format:Unknown
- 148: TypePointer UniformConstant 147
-149(g_tTexcdf4a): 148(ptr) Variable UniformConstant
- 150: TypeImage 27(int) Cube array sampled format:Unknown
- 151: TypePointer UniformConstant 150
-152(g_tTexcdi4a): 151(ptr) Variable UniformConstant
- 153: TypeImage 44(int) Cube array sampled format:Unknown
- 154: TypePointer UniformConstant 153
-155(g_tTexcdu4a): 154(ptr) Variable UniformConstant
+ 109: TypePointer Output 98(fvec4)
+ 110(Color): 109(ptr) Variable Output
+ 113: TypePointer Output 6(float)
+ 114(Depth): 113(ptr) Variable Output
+ 118: TypeImage 6(float) 1D sampled format:Unknown
+ 119: TypePointer UniformConstant 118
+ 120(g_tTex1df4): 119(ptr) Variable UniformConstant
+ 121: TypeImage 27(int) 1D sampled format:Unknown
+ 122: TypePointer UniformConstant 121
+ 123(g_tTex1di4): 122(ptr) Variable UniformConstant
+ 124: TypeImage 44(int) 1D sampled format:Unknown
+ 125: TypePointer UniformConstant 124
+ 126(g_tTex1du4): 125(ptr) Variable UniformConstant
+ 127: TypeImage 6(float) 2D sampled format:Unknown
+ 128: TypePointer UniformConstant 127
+ 129(g_tTex2df4): 128(ptr) Variable UniformConstant
+ 130: TypeImage 27(int) 2D sampled format:Unknown
+ 131: TypePointer UniformConstant 130
+ 132(g_tTex2di4): 131(ptr) Variable UniformConstant
+ 133: TypeImage 44(int) 2D sampled format:Unknown
+ 134: TypePointer UniformConstant 133
+ 135(g_tTex2du4): 134(ptr) Variable UniformConstant
+ 136: TypeImage 6(float) 3D sampled format:Unknown
+ 137: TypePointer UniformConstant 136
+ 138(g_tTex3df4): 137(ptr) Variable UniformConstant
+ 139: TypeImage 27(int) 3D sampled format:Unknown
+ 140: TypePointer UniformConstant 139
+ 141(g_tTex3di4): 140(ptr) Variable UniformConstant
+ 142: TypeImage 44(int) 3D sampled format:Unknown
+ 143: TypePointer UniformConstant 142
+ 144(g_tTex3du4): 143(ptr) Variable UniformConstant
+ 145: TypeImage 6(float) Cube sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+ 147(g_tTexcdf4): 146(ptr) Variable UniformConstant
+ 148: TypeImage 27(int) Cube sampled format:Unknown
+ 149: TypePointer UniformConstant 148
+ 150(g_tTexcdi4): 149(ptr) Variable UniformConstant
+ 151: TypeImage 44(int) Cube sampled format:Unknown
+ 152: TypePointer UniformConstant 151
+ 153(g_tTexcdu4): 152(ptr) Variable UniformConstant
+ 154: TypeImage 6(float) Cube array sampled format:Unknown
+ 155: TypePointer UniformConstant 154
+156(g_tTexcdf4a): 155(ptr) Variable UniformConstant
+ 157: TypeImage 27(int) Cube array sampled format:Unknown
+ 158: TypePointer UniformConstant 157
+159(g_tTexcdi4a): 158(ptr) Variable UniformConstant
+ 160: TypeImage 44(int) Cube array sampled format:Unknown
+ 161: TypePointer UniformConstant 160
+162(g_tTexcdu4a): 161(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(r11): 7(ptr) Variable Function
@@ -547,6 +583,11 @@
Store 106 104
108: 7(ptr) AccessChain 101(psout) 107
Store 108 103
- 109:99(PS_OUTPUT) Load 101(psout)
- ReturnValue 109
+ 111: 105(ptr) AccessChain 101(psout) 102
+ 112: 98(fvec4) Load 111
+ Store 110(Color) 112
+ 115: 7(ptr) AccessChain 101(psout) 107
+ 116: 6(float) Load 115
+ Store 114(Depth) 116
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 6da919a..16f575a 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -160,7 +160,7 @@
0:? 1.300000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -169,14 +169,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -189,6 +202,8 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -197,7 +212,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -355,7 +370,7 @@
0:? 1.300000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -364,14 +379,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -384,19 +412,20 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 126
+// Id's are bound by 133
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 124 128
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -421,7 +450,9 @@
MemberName 113(PS_OUTPUT) 0 "Color"
MemberName 113(PS_OUTPUT) 1 "Depth"
Name 115 "psout"
- Name 125 "g_tTex1df4a"
+ Name 124 "Color"
+ Name 128 "Depth"
+ Name 132 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -434,9 +465,10 @@
Decorate 85(g_tTexcdf4) DescriptorSet 0
Decorate 98(g_tTexcdi4) DescriptorSet 0
Decorate 107(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 113(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 125(g_tTex1df4a) DescriptorSet 0
- Decorate 125(g_tTex1df4a) Binding 1
+ Decorate 124(Color) Location 0
+ Decorate 128(Depth) BuiltIn FragDepth
+ Decorate 132(g_tTex1df4a) DescriptorSet 0
+ Decorate 132(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -508,7 +540,11 @@
118: 7(fvec4) ConstantComposite 117 117 117 117
120: 27(int) Constant 1
121: TypePointer Function 6(float)
-125(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 123: TypePointer Output 7(fvec4)
+ 124(Color): 123(ptr) Variable Output
+ 127: TypePointer Output 6(float)
+ 128(Depth): 127(ptr) Variable Output
+132(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -570,6 +606,11 @@
Store 119 118
122: 121(ptr) AccessChain 115(psout) 120
Store 122 117
- 123:113(PS_OUTPUT) Load 115(psout)
- ReturnValue 123
+ 125: 8(ptr) AccessChain 115(psout) 116
+ 126: 7(fvec4) Load 125
+ Store 124(Color) 126
+ 129: 121(ptr) AccessChain 115(psout) 120
+ 130: 6(float) Load 129
+ Store 128(Depth) 130
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 0685dc2..d0d275f 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:52 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -208,7 +208,7 @@
0:? 1.300000
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:47 Constant:
0:47 0 (const int)
0:47 Constant:
@@ -217,14 +217,27 @@
0:47 1.000000
0:47 1.000000
0:48 move second child to first child (temp float)
-0:48 Depth: direct index for structure (temp float FragDepth)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 1 (const int)
0:48 Constant:
0:48 1.000000
-0:50 Branch: Return with expression
-0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:50 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:50 Color: direct index for structure (temp 4-component vector of float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 0 (const int)
+0:50 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:50 Depth: direct index for structure (temp float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 1 (const int)
+0:50 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -240,6 +253,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -248,7 +263,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:52 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -454,7 +469,7 @@
0:? 1.300000
0:47 move second child to first child (temp 4-component vector of float)
0:47 Color: direct index for structure (temp 4-component vector of float)
-0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:47 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:47 Constant:
0:47 0 (const int)
0:47 Constant:
@@ -463,14 +478,27 @@
0:47 1.000000
0:47 1.000000
0:48 move second child to first child (temp float)
-0:48 Depth: direct index for structure (temp float FragDepth)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 1 (const int)
0:48 Constant:
0:48 1.000000
-0:50 Branch: Return with expression
-0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:50 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:50 Color: direct index for structure (temp 4-component vector of float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 0 (const int)
+0:50 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:50 Depth: direct index for structure (temp float)
+0:50 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:50 Constant:
+0:50 1 (const int)
+0:50 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -486,18 +514,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 161
+// Id's are bound by 168
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 159 163
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -528,7 +557,9 @@
MemberName 148(PS_OUTPUT) 0 "Color"
MemberName 148(PS_OUTPUT) 1 "Depth"
Name 150 "psout"
- Name 160 "g_tTex1df4a"
+ Name 159 "Color"
+ Name 163 "Depth"
+ Name 167 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -544,9 +575,10 @@
Decorate 124(g_tTexcdf4) DescriptorSet 0
Decorate 133(g_tTexcdi4) DescriptorSet 0
Decorate 142(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 148(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 160(g_tTex1df4a) DescriptorSet 0
- Decorate 160(g_tTex1df4a) Binding 1
+ Decorate 159(Color) Location 0
+ Decorate 163(Depth) BuiltIn FragDepth
+ Decorate 167(g_tTex1df4a) DescriptorSet 0
+ Decorate 167(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -638,7 +670,11 @@
153: 7(fvec4) ConstantComposite 152 152 152 152
155: 24(int) Constant 1
156: TypePointer Function 6(float)
-160(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 158: TypePointer Output 7(fvec4)
+ 159(Color): 158(ptr) Variable Output
+ 162: TypePointer Output 6(float)
+ 163(Depth): 162(ptr) Variable Output
+167(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -718,6 +754,11 @@
Store 154 153
157: 156(ptr) AccessChain 150(psout) 155
Store 157 152
- 158:148(PS_OUTPUT) Load 150(psout)
- ReturnValue 158
+ 160: 8(ptr) AccessChain 150(psout) 151
+ 161: 7(fvec4) Load 160
+ Store 159(Color) 161
+ 164: 156(ptr) AccessChain 150(psout) 155
+ 165: 6(float) Load 164
+ Store 163(Depth) 165
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index eacddae..5e95ae0 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -1,7 +1,7 @@
hlsl.samplegrad.basic.dx10.vert
Shader version: 450
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:27 Function Parameters:
0:? Sequence
0:30 Sequence
@@ -206,8 +206,8 @@
0:? 1.200000
0:? 1.300000
0:46 move second child to first child (temp 4-component vector of float)
-0:46 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:46 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46 Pos: direct index for structure (temp 4-component vector of float)
+0:46 'vsout' (temp structure{temp 4-component vector of float Pos})
0:46 Constant:
0:46 0 (const int)
0:? Constant:
@@ -215,8 +215,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:48 Branch: Return with expression
-0:48 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:48 Pos: direct index for structure (temp 4-component vector of float)
+0:48 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -232,6 +239,7 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
Linked vertex stage:
@@ -239,7 +247,7 @@
Shader version: 450
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:27 Function Parameters:
0:? Sequence
0:30 Sequence
@@ -444,8 +452,8 @@
0:? 1.200000
0:? 1.300000
0:46 move second child to first child (temp 4-component vector of float)
-0:46 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:46 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46 Pos: direct index for structure (temp 4-component vector of float)
+0:46 'vsout' (temp structure{temp 4-component vector of float Pos})
0:46 Constant:
0:46 0 (const int)
0:? Constant:
@@ -453,8 +461,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:48 Branch: Return with expression
-0:48 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:48 Pos: direct index for structure (temp 4-component vector of float)
+0:48 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -470,17 +485,17 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 158
+// Id's are bound by 161
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
- Source HLSL 450
+ EntryPoint Vertex 4 "main" 156
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -510,7 +525,8 @@
Name 148 "VS_OUTPUT"
MemberName 148(VS_OUTPUT) 0 "Pos"
Name 150 "vsout"
- Name 157 "g_tTex1df4a"
+ Name 156 "Pos"
+ Name 160 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -526,9 +542,9 @@
Decorate 124(g_tTexcdf4) DescriptorSet 0
Decorate 133(g_tTexcdi4) DescriptorSet 0
Decorate 142(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 148(VS_OUTPUT) 0 BuiltIn FragCoord
- Decorate 157(g_tTex1df4a) DescriptorSet 0
- Decorate 157(g_tTex1df4a) Binding 1
+ Decorate 156(Pos) BuiltIn Position
+ Decorate 160(g_tTex1df4a) DescriptorSet 0
+ Decorate 160(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -618,7 +634,9 @@
151: 24(int) Constant 0
152: 6(float) Constant 0
153: 7(fvec4) ConstantComposite 152 152 152 152
-157(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 155: TypePointer Output 7(fvec4)
+ 156(Pos): 155(ptr) Variable Output
+160(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -696,6 +714,8 @@
Store 139(txval42) 147
154: 8(ptr) AccessChain 150(vsout) 151
Store 154 153
- 155:148(VS_OUTPUT) Load 150(vsout)
- ReturnValue 155
+ 157: 8(ptr) AccessChain 150(vsout) 151
+ 158: 7(fvec4) Load 157
+ Store 156(Pos) 158
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 343babc..ffe8832 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -178,7 +178,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -187,14 +187,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -210,6 +223,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -218,7 +233,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -394,7 +409,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -403,14 +418,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -426,18 +454,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 152
+// Id's are bound by 159
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 141 145
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -462,10 +491,12 @@
MemberName 132(PS_OUTPUT) 0 "Color"
MemberName 132(PS_OUTPUT) 1 "Depth"
Name 134 "psout"
- Name 142 "g_tTex1df4a"
- Name 145 "g_tTexcdf4"
- Name 148 "g_tTexcdi4"
- Name 151 "g_tTexcdu4"
+ Name 141 "Color"
+ Name 145 "Depth"
+ Name 149 "g_tTex1df4a"
+ Name 152 "g_tTexcdf4"
+ Name 155 "g_tTexcdi4"
+ Name 158 "g_tTexcdu4"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -478,12 +509,13 @@
Decorate 95(g_tTex3df4) DescriptorSet 0
Decorate 110(g_tTex3di4) DescriptorSet 0
Decorate 121(g_tTex3du4) DescriptorSet 0
- MemberDecorate 132(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 142(g_tTex1df4a) DescriptorSet 0
- Decorate 142(g_tTex1df4a) Binding 1
- Decorate 145(g_tTexcdf4) DescriptorSet 0
- Decorate 148(g_tTexcdi4) DescriptorSet 0
- Decorate 151(g_tTexcdu4) DescriptorSet 0
+ Decorate 141(Color) Location 0
+ Decorate 145(Depth) BuiltIn FragDepth
+ Decorate 149(g_tTex1df4a) DescriptorSet 0
+ Decorate 149(g_tTex1df4a) Binding 1
+ Decorate 152(g_tTexcdf4) DescriptorSet 0
+ Decorate 155(g_tTexcdi4) DescriptorSet 0
+ Decorate 158(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -572,16 +604,20 @@
135: 6(float) Constant 1065353216
136: 7(fvec4) ConstantComposite 135 135 135 135
138: TypePointer Function 6(float)
-142(g_tTex1df4a): 11(ptr) Variable UniformConstant
- 143: TypeImage 6(float) Cube sampled format:Unknown
- 144: TypePointer UniformConstant 143
- 145(g_tTexcdf4): 144(ptr) Variable UniformConstant
- 146: TypeImage 23(int) Cube sampled format:Unknown
- 147: TypePointer UniformConstant 146
- 148(g_tTexcdi4): 147(ptr) Variable UniformConstant
- 149: TypeImage 38(int) Cube sampled format:Unknown
- 150: TypePointer UniformConstant 149
- 151(g_tTexcdu4): 150(ptr) Variable UniformConstant
+ 140: TypePointer Output 7(fvec4)
+ 141(Color): 140(ptr) Variable Output
+ 144: TypePointer Output 6(float)
+ 145(Depth): 144(ptr) Variable Output
+149(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 150: TypeImage 6(float) Cube sampled format:Unknown
+ 151: TypePointer UniformConstant 150
+ 152(g_tTexcdf4): 151(ptr) Variable UniformConstant
+ 153: TypeImage 23(int) Cube sampled format:Unknown
+ 154: TypePointer UniformConstant 153
+ 155(g_tTexcdi4): 154(ptr) Variable UniformConstant
+ 156: TypeImage 38(int) Cube sampled format:Unknown
+ 157: TypePointer UniformConstant 156
+ 158(g_tTexcdu4): 157(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -643,6 +679,11 @@
Store 137 136
139: 138(ptr) AccessChain 134(psout) 24
Store 139 135
- 140:132(PS_OUTPUT) Load 134(psout)
- ReturnValue 140
+ 142: 8(ptr) AccessChain 134(psout) 63
+ 143: 7(fvec4) Load 142
+ Store 141(Color) 143
+ 146: 138(ptr) AccessChain 134(psout) 24
+ 147: 6(float) Load 146
+ Store 145(Depth) 147
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index 3318e46..9e14176 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:40 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -115,7 +115,7 @@
0:? 0 (const int)
0:35 move second child to first child (temp 4-component vector of float)
0:35 Color: direct index for structure (temp 4-component vector of float)
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:35 Constant:
0:35 0 (const int)
0:35 Constant:
@@ -124,14 +124,27 @@
0:35 1.000000
0:35 1.000000
0:36 move second child to first child (temp float)
-0:36 Depth: direct index for structure (temp float FragDepth)
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 1.000000
-0:38 Branch: Return with expression
-0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:38 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:38 Color: direct index for structure (temp 4-component vector of float)
+0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:38 Constant:
+0:38 0 (const int)
+0:38 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:38 Depth: direct index for structure (temp float)
+0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:38 Constant:
+0:38 1 (const int)
+0:38 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -144,6 +157,8 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -152,7 +167,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:40 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -265,7 +280,7 @@
0:? 0 (const int)
0:35 move second child to first child (temp 4-component vector of float)
0:35 Color: direct index for structure (temp 4-component vector of float)
-0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:35 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:35 Constant:
0:35 0 (const int)
0:35 Constant:
@@ -274,14 +289,27 @@
0:35 1.000000
0:35 1.000000
0:36 move second child to first child (temp float)
-0:36 Depth: direct index for structure (temp float FragDepth)
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 1 (const int)
0:36 Constant:
0:36 1.000000
-0:38 Branch: Return with expression
-0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:38 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:38 Color: direct index for structure (temp 4-component vector of float)
+0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:38 Constant:
+0:38 0 (const int)
+0:38 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:38 Depth: direct index for structure (temp float)
+0:38 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:38 Constant:
+0:38 1 (const int)
+0:38 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -294,19 +322,20 @@
0:? 'g_tTexcdf4' (uniform textureCubeArray)
0:? 'g_tTexcdi4' (uniform itextureCubeArray)
0:? 'g_tTexcdu4' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 106
+// Id's are bound by 113
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 95 99
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -325,10 +354,12 @@
MemberName 86(PS_OUTPUT) 0 "Color"
MemberName 86(PS_OUTPUT) 1 "Depth"
Name 88 "psout"
- Name 96 "g_tTex1df4a"
- Name 99 "g_tTexcdf4"
- Name 102 "g_tTexcdi4"
- Name 105 "g_tTexcdu4"
+ Name 95 "Color"
+ Name 99 "Depth"
+ Name 103 "g_tTex1df4a"
+ Name 106 "g_tTexcdf4"
+ Name 109 "g_tTexcdi4"
+ Name 112 "g_tTexcdu4"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -338,12 +369,13 @@
Decorate 55(g_tTex2df4) DescriptorSet 0
Decorate 71(g_tTex2di4) DescriptorSet 0
Decorate 80(g_tTex2du4) DescriptorSet 0
- MemberDecorate 86(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 96(g_tTex1df4a) DescriptorSet 0
- Decorate 96(g_tTex1df4a) Binding 1
- Decorate 99(g_tTexcdf4) DescriptorSet 0
- Decorate 102(g_tTexcdi4) DescriptorSet 0
- Decorate 105(g_tTexcdu4) DescriptorSet 0
+ Decorate 95(Color) Location 0
+ Decorate 99(Depth) BuiltIn FragDepth
+ Decorate 103(g_tTex1df4a) DescriptorSet 0
+ Decorate 103(g_tTex1df4a) Binding 1
+ Decorate 106(g_tTexcdf4) DescriptorSet 0
+ Decorate 109(g_tTexcdi4) DescriptorSet 0
+ Decorate 112(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -401,16 +433,20 @@
89: 6(float) Constant 1065353216
90: 7(fvec4) ConstantComposite 89 89 89 89
92: TypePointer Function 6(float)
- 96(g_tTex1df4a): 11(ptr) Variable UniformConstant
- 97: TypeImage 6(float) Cube array sampled format:Unknown
- 98: TypePointer UniformConstant 97
- 99(g_tTexcdf4): 98(ptr) Variable UniformConstant
- 100: TypeImage 26(int) Cube array sampled format:Unknown
- 101: TypePointer UniformConstant 100
- 102(g_tTexcdi4): 101(ptr) Variable UniformConstant
- 103: TypeImage 40(int) Cube array sampled format:Unknown
- 104: TypePointer UniformConstant 103
- 105(g_tTexcdu4): 104(ptr) Variable UniformConstant
+ 94: TypePointer Output 7(fvec4)
+ 95(Color): 94(ptr) Variable Output
+ 98: TypePointer Output 6(float)
+ 99(Depth): 98(ptr) Variable Output
+103(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 104: TypeImage 6(float) Cube array sampled format:Unknown
+ 105: TypePointer UniformConstant 104
+ 106(g_tTexcdf4): 105(ptr) Variable UniformConstant
+ 107: TypeImage 26(int) Cube array sampled format:Unknown
+ 108: TypePointer UniformConstant 107
+ 109(g_tTexcdi4): 108(ptr) Variable UniformConstant
+ 110: TypeImage 40(int) Cube array sampled format:Unknown
+ 111: TypePointer UniformConstant 110
+ 112(g_tTexcdu4): 111(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -454,6 +490,11 @@
Store 91 90
93: 92(ptr) AccessChain 88(psout) 27
Store 93 89
- 94:86(PS_OUTPUT) Load 88(psout)
- ReturnValue 94
+ 96: 8(ptr) AccessChain 88(psout) 65
+ 97: 7(fvec4) Load 96
+ Store 95(Color) 97
+ 100: 92(ptr) AccessChain 88(psout) 27
+ 101: 6(float) Load 100
+ Store 99(Depth) 101
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index dd042de..766f6ac 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -124,7 +124,7 @@
0:37 0.750000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -133,14 +133,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -153,6 +166,8 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -161,7 +176,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:44 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:24 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:24 Function Parameters:
0:? Sequence
0:27 Sequence
@@ -283,7 +298,7 @@
0:37 0.750000
0:39 move second child to first child (temp 4-component vector of float)
0:39 Color: direct index for structure (temp 4-component vector of float)
-0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:39 Constant:
0:39 0 (const int)
0:39 Constant:
@@ -292,14 +307,27 @@
0:39 1.000000
0:39 1.000000
0:40 move second child to first child (temp float)
-0:40 Depth: direct index for structure (temp float FragDepth)
-0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:40 Depth: direct index for structure (temp float)
+0:40 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:40 Constant:
0:40 1 (const int)
0:40 Constant:
0:40 1.000000
-0:42 Branch: Return with expression
-0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:42 Color: direct index for structure (temp 4-component vector of float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 0 (const int)
+0:42 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:42 Depth: direct index for structure (temp float)
+0:42 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:42 Constant:
+0:42 1 (const int)
+0:42 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -312,19 +340,20 @@
0:? 'g_tTexcdf4a' (uniform textureCubeArray)
0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 133
+// Id's are bound by 140
Capability Shader
Capability Sampled1D
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 131 135
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4a"
@@ -349,7 +378,9 @@
MemberName 121(PS_OUTPUT) 0 "Color"
MemberName 121(PS_OUTPUT) 1 "Depth"
Name 123 "psout"
- Name 132 "g_tTex1df4"
+ Name 131 "Color"
+ Name 135 "Depth"
+ Name 139 "g_tTex1df4"
Decorate 12(g_tTex1df4a) DescriptorSet 0
Decorate 12(g_tTex1df4a) Binding 1
Decorate 16(g_sSamp) DescriptorSet 0
@@ -362,9 +393,10 @@
Decorate 91(g_tTexcdf4a) DescriptorSet 0
Decorate 101(g_tTexcdi4a) DescriptorSet 0
Decorate 111(g_tTexcdu4a) DescriptorSet 0
- MemberDecorate 121(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 132(g_tTex1df4) DescriptorSet 0
- Decorate 132(g_tTex1df4) Binding 0
+ Decorate 131(Color) Location 0
+ Decorate 135(Depth) BuiltIn FragDepth
+ Decorate 139(g_tTex1df4) DescriptorSet 0
+ Decorate 139(g_tTex1df4) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -443,7 +475,11 @@
125: 7(fvec4) ConstantComposite 118 118 118 118
127: 26(int) Constant 1
128: TypePointer Function 6(float)
- 132(g_tTex1df4): 11(ptr) Variable UniformConstant
+ 130: TypePointer Output 7(fvec4)
+ 131(Color): 130(ptr) Variable Output
+ 134: TypePointer Output 6(float)
+ 135(Depth): 134(ptr) Variable Output
+ 139(g_tTex1df4): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -505,6 +541,11 @@
Store 126 125
129: 128(ptr) AccessChain 123(psout) 127
Store 129 118
- 130:121(PS_OUTPUT) Load 123(psout)
- ReturnValue 130
+ 132: 8(ptr) AccessChain 123(psout) 124
+ 133: 7(fvec4) Load 132
+ Store 131(Color) 133
+ 136: 128(ptr) AccessChain 123(psout) 127
+ 137: 6(float) Load 136
+ Store 135(Depth) 137
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index 52c635d..ee53339 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:29 Function Parameters:
0:? Sequence
0:32 Sequence
@@ -154,7 +154,7 @@
0:46 0.750000
0:48 move second child to first child (temp 4-component vector of float)
0:48 Color: direct index for structure (temp 4-component vector of float)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 Constant:
@@ -163,14 +163,27 @@
0:48 1.000000
0:48 1.000000
0:49 move second child to first child (temp float)
-0:49 Depth: direct index for structure (temp float FragDepth)
-0:49 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:49 Depth: direct index for structure (temp float)
+0:49 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:49 Constant:
0:49 1 (const int)
0:49 Constant:
0:49 1.000000
-0:51 Branch: Return with expression
-0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:51 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:51 Color: direct index for structure (temp 4-component vector of float)
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:51 Constant:
+0:51 0 (const int)
+0:51 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:51 Depth: direct index for structure (temp float)
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:51 Constant:
+0:51 1 (const int)
+0:51 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -187,6 +200,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -195,7 +210,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:53 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:29 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:29 Function Parameters:
0:? Sequence
0:32 Sequence
@@ -347,7 +362,7 @@
0:46 0.750000
0:48 move second child to first child (temp 4-component vector of float)
0:48 Color: direct index for structure (temp 4-component vector of float)
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:48 Constant:
0:48 0 (const int)
0:48 Constant:
@@ -356,14 +371,27 @@
0:48 1.000000
0:48 1.000000
0:49 move second child to first child (temp float)
-0:49 Depth: direct index for structure (temp float FragDepth)
-0:49 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:49 Depth: direct index for structure (temp float)
+0:49 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:49 Constant:
0:49 1 (const int)
0:49 Constant:
0:49 1.000000
-0:51 Branch: Return with expression
-0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:51 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:51 Color: direct index for structure (temp 4-component vector of float)
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:51 Constant:
+0:51 0 (const int)
+0:51 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:51 Depth: direct index for structure (temp float)
+0:51 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:51 Constant:
+0:51 1 (const int)
+0:51 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_sSamp2d' (uniform sampler)
@@ -380,18 +408,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 158
+// Id's are bound by 165
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 155 159
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -422,8 +451,10 @@
MemberName 144(PS_OUTPUT) 0 "Color"
MemberName 144(PS_OUTPUT) 1 "Depth"
Name 146 "psout"
- Name 156 "g_sSamp2d"
- Name 157 "g_tTex1df4a"
+ Name 155 "Color"
+ Name 159 "Depth"
+ Name 163 "g_sSamp2d"
+ Name 164 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -439,10 +470,11 @@
Decorate 120(g_tTexcdf4) DescriptorSet 0
Decorate 129(g_tTexcdi4) DescriptorSet 0
Decorate 138(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 144(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 156(g_sSamp2d) DescriptorSet 0
- Decorate 157(g_tTex1df4a) DescriptorSet 0
- Decorate 157(g_tTex1df4a) Binding 1
+ Decorate 155(Color) Location 0
+ Decorate 159(Depth) BuiltIn FragDepth
+ Decorate 163(g_sSamp2d) DescriptorSet 0
+ Decorate 164(g_tTex1df4a) DescriptorSet 0
+ Decorate 164(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -530,8 +562,12 @@
149: 7(fvec4) ConstantComposite 148 148 148 148
151: 23(int) Constant 1
152: TypePointer Function 6(float)
- 156(g_sSamp2d): 15(ptr) Variable UniformConstant
-157(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 154: TypePointer Output 7(fvec4)
+ 155(Color): 154(ptr) Variable Output
+ 158: TypePointer Output 6(float)
+ 159(Depth): 158(ptr) Variable Output
+ 163(g_sSamp2d): 15(ptr) Variable UniformConstant
+164(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -611,6 +647,11 @@
Store 150 149
153: 152(ptr) AccessChain 146(psout) 151
Store 153 148
- 154:144(PS_OUTPUT) Load 146(psout)
- ReturnValue 154
+ 156: 8(ptr) AccessChain 146(psout) 147
+ 157: 7(fvec4) Load 156
+ Store 155(Color) 157
+ 160: 152(ptr) AccessChain 146(psout) 151
+ 161: 6(float) Load 160
+ Store 159(Depth) 161
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 4bef16d..9af7a9f 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -1,7 +1,7 @@
hlsl.samplelevel.basic.dx10.vert
Shader version: 450
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:27 Function Parameters:
0:? Sequence
0:30 Sequence
@@ -152,8 +152,8 @@
0:44 Constant:
0:44 0.750000
0:46 move second child to first child (temp 4-component vector of float)
-0:46 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:46 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46 Pos: direct index for structure (temp 4-component vector of float)
+0:46 'vsout' (temp structure{temp 4-component vector of float Pos})
0:46 Constant:
0:46 0 (const int)
0:? Constant:
@@ -161,8 +161,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:48 Branch: Return with expression
-0:48 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:48 Pos: direct index for structure (temp 4-component vector of float)
+0:48 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -178,6 +185,7 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
Linked vertex stage:
@@ -185,7 +193,7 @@
Shader version: 450
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float FragCoord Pos})
+0:27 Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:27 Function Parameters:
0:? Sequence
0:30 Sequence
@@ -336,8 +344,8 @@
0:44 Constant:
0:44 0.750000
0:46 move second child to first child (temp 4-component vector of float)
-0:46 Pos: direct index for structure (temp 4-component vector of float FragCoord)
-0:46 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:46 Pos: direct index for structure (temp 4-component vector of float)
+0:46 'vsout' (temp structure{temp 4-component vector of float Pos})
0:46 Constant:
0:46 0 (const int)
0:? Constant:
@@ -345,8 +353,15 @@
0:? 0.000000
0:? 0.000000
0:? 0.000000
-0:48 Branch: Return with expression
-0:48 'vsout' (temp structure{temp 4-component vector of float FragCoord Pos})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Pos' (out 4-component vector of float Position)
+0:48 Pos: direct index for structure (temp 4-component vector of float)
+0:48 'vsout' (temp structure{temp 4-component vector of float Pos})
+0:48 Constant:
+0:48 0 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -362,17 +377,17 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Pos' (out 4-component vector of float Position)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 154
+// Id's are bound by 157
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Vertex 4 "main"
- Source HLSL 450
+ EntryPoint Vertex 4 "main" 152
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -402,7 +417,8 @@
Name 144 "VS_OUTPUT"
MemberName 144(VS_OUTPUT) 0 "Pos"
Name 146 "vsout"
- Name 153 "g_tTex1df4a"
+ Name 152 "Pos"
+ Name 156 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -418,9 +434,9 @@
Decorate 120(g_tTexcdf4) DescriptorSet 0
Decorate 129(g_tTexcdi4) DescriptorSet 0
Decorate 138(g_tTexcdu4) DescriptorSet 0
- MemberDecorate 144(VS_OUTPUT) 0 BuiltIn FragCoord
- Decorate 153(g_tTex1df4a) DescriptorSet 0
- Decorate 153(g_tTex1df4a) Binding 1
+ Decorate 152(Pos) BuiltIn Position
+ Decorate 156(g_tTex1df4a) DescriptorSet 0
+ Decorate 156(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -506,7 +522,9 @@
147: 23(int) Constant 0
148: 6(float) Constant 0
149: 7(fvec4) ConstantComposite 148 148 148 148
-153(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 151: TypePointer Output 7(fvec4)
+ 152(Pos): 151(ptr) Variable Output
+156(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -584,6 +602,8 @@
Store 135(txval42) 143
150: 8(ptr) AccessChain 146(vsout) 147
Store 150 149
- 151:144(VS_OUTPUT) Load 146(vsout)
- ReturnValue 151
+ 153: 8(ptr) AccessChain 146(vsout) 147
+ 154: 7(fvec4) Load 153
+ Store 152(Pos) 154
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index 4f7a1a0..d669a99 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -142,7 +142,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -151,14 +151,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -174,6 +187,8 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -182,7 +197,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:50 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:28 Function Parameters:
0:? Sequence
0:31 Sequence
@@ -322,7 +337,7 @@
0:? -1 (const int)
0:45 move second child to first child (temp 4-component vector of float)
0:45 Color: direct index for structure (temp 4-component vector of float)
-0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:45 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:45 Constant:
0:45 0 (const int)
0:45 Constant:
@@ -331,14 +346,27 @@
0:45 1.000000
0:45 1.000000
0:46 move second child to first child (temp float)
-0:46 Depth: direct index for structure (temp float FragDepth)
-0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:46 Depth: direct index for structure (temp float)
+0:46 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:46 Constant:
0:46 1 (const int)
0:46 Constant:
0:46 1.000000
-0:48 Branch: Return with expression
-0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:48 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:48 Color: direct index for structure (temp 4-component vector of float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 0 (const int)
+0:48 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:48 Depth: direct index for structure (temp float)
+0:48 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:48 Constant:
+0:48 1 (const int)
+0:48 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -354,18 +382,19 @@
0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 148
+// Id's are bound by 155
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 137 141
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -390,10 +419,12 @@
MemberName 128(PS_OUTPUT) 0 "Color"
MemberName 128(PS_OUTPUT) 1 "Depth"
Name 130 "psout"
- Name 138 "g_tTex1df4a"
- Name 141 "g_tTexcdf4"
- Name 144 "g_tTexcdi4"
- Name 147 "g_tTexcdu4"
+ Name 137 "Color"
+ Name 141 "Depth"
+ Name 145 "g_tTex1df4a"
+ Name 148 "g_tTexcdf4"
+ Name 151 "g_tTexcdi4"
+ Name 154 "g_tTexcdu4"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -406,12 +437,13 @@
Decorate 93(g_tTex3df4) DescriptorSet 0
Decorate 106(g_tTex3di4) DescriptorSet 0
Decorate 117(g_tTex3du4) DescriptorSet 0
- MemberDecorate 128(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 138(g_tTex1df4a) DescriptorSet 0
- Decorate 138(g_tTex1df4a) Binding 1
- Decorate 141(g_tTexcdf4) DescriptorSet 0
- Decorate 144(g_tTexcdi4) DescriptorSet 0
- Decorate 147(g_tTexcdu4) DescriptorSet 0
+ Decorate 137(Color) Location 0
+ Decorate 141(Depth) BuiltIn FragDepth
+ Decorate 145(g_tTex1df4a) DescriptorSet 0
+ Decorate 145(g_tTex1df4a) Binding 1
+ Decorate 148(g_tTexcdf4) DescriptorSet 0
+ Decorate 151(g_tTexcdi4) DescriptorSet 0
+ Decorate 154(g_tTexcdu4) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -496,16 +528,20 @@
131: 6(float) Constant 1065353216
132: 7(fvec4) ConstantComposite 131 131 131 131
134: TypePointer Function 6(float)
-138(g_tTex1df4a): 11(ptr) Variable UniformConstant
- 139: TypeImage 6(float) Cube sampled format:Unknown
- 140: TypePointer UniformConstant 139
- 141(g_tTexcdf4): 140(ptr) Variable UniformConstant
- 142: TypeImage 22(int) Cube sampled format:Unknown
- 143: TypePointer UniformConstant 142
- 144(g_tTexcdi4): 143(ptr) Variable UniformConstant
- 145: TypeImage 37(int) Cube sampled format:Unknown
- 146: TypePointer UniformConstant 145
- 147(g_tTexcdu4): 146(ptr) Variable UniformConstant
+ 136: TypePointer Output 7(fvec4)
+ 137(Color): 136(ptr) Variable Output
+ 140: TypePointer Output 6(float)
+ 141(Depth): 140(ptr) Variable Output
+145(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 146: TypeImage 6(float) Cube sampled format:Unknown
+ 147: TypePointer UniformConstant 146
+ 148(g_tTexcdf4): 147(ptr) Variable UniformConstant
+ 149: TypeImage 22(int) Cube sampled format:Unknown
+ 150: TypePointer UniformConstant 149
+ 151(g_tTexcdi4): 150(ptr) Variable UniformConstant
+ 152: TypeImage 37(int) Cube sampled format:Unknown
+ 153: TypePointer UniformConstant 152
+ 154(g_tTexcdu4): 153(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -567,6 +603,11 @@
Store 133 132
135: 134(ptr) AccessChain 130(psout) 23
Store 135 131
- 136:128(PS_OUTPUT) Load 130(psout)
- ReturnValue 136
+ 138: 8(ptr) AccessChain 130(psout) 61
+ 139: 7(fvec4) Load 138
+ Store 137(Color) 139
+ 142: 134(ptr) AccessChain 130(psout) 23
+ 143: 6(float) Load 142
+ Store 141(Depth) 143
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index 0d18428..fd2673b 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -97,7 +97,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -106,14 +106,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -123,6 +136,8 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -131,7 +146,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:38 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:20 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -226,7 +241,7 @@
0:? 1 (const int)
0:33 move second child to first child (temp 4-component vector of float)
0:33 Color: direct index for structure (temp 4-component vector of float)
-0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:33 Constant:
0:33 0 (const int)
0:33 Constant:
@@ -235,14 +250,27 @@
0:33 1.000000
0:33 1.000000
0:34 move second child to first child (temp float)
-0:34 Depth: direct index for structure (temp float FragDepth)
-0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Depth: direct index for structure (temp float)
+0:34 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:34 Constant:
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
-0:36 Branch: Return with expression
-0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? Sequence
+0:? Sequence
+0:36 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:36 Color: direct index for structure (temp 4-component vector of float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 0 (const int)
+0:36 move second child to first child (temp float)
+0:? 'Depth' (out float FragDepth)
+0:36 Depth: direct index for structure (temp float)
+0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:36 Constant:
+0:36 1 (const int)
+0:36 Branch: Return
0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
@@ -252,18 +280,19 @@
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 105
+// Id's are bound by 112
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 103 107
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
@@ -282,7 +311,9 @@
MemberName 94(PS_OUTPUT) 0 "Color"
MemberName 94(PS_OUTPUT) 1 "Depth"
Name 96 "psout"
- Name 104 "g_tTex1df4a"
+ Name 103 "Color"
+ Name 107 "Depth"
+ Name 111 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
@@ -292,9 +323,10 @@
Decorate 60(g_tTex2df4) DescriptorSet 0
Decorate 73(g_tTex2di4) DescriptorSet 0
Decorate 84(g_tTex2du4) DescriptorSet 0
- MemberDecorate 94(PS_OUTPUT) 1 BuiltIn FragDepth
- Decorate 104(g_tTex1df4a) DescriptorSet 0
- Decorate 104(g_tTex1df4a) Binding 1
+ Decorate 103(Color) Location 0
+ Decorate 107(Depth) BuiltIn FragDepth
+ Decorate 111(g_tTex1df4a) DescriptorSet 0
+ Decorate 111(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -360,7 +392,11 @@
97: 6(float) Constant 1065353216
98: 7(fvec4) ConstantComposite 97 97 97 97
100: TypePointer Function 6(float)
-104(g_tTex1df4a): 11(ptr) Variable UniformConstant
+ 102: TypePointer Output 7(fvec4)
+ 103(Color): 102(ptr) Variable Output
+ 106: TypePointer Output 6(float)
+ 107(Depth): 106(ptr) Variable Output
+111(g_tTex1df4a): 11(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
@@ -404,6 +440,11 @@
Store 99 98
101: 100(ptr) AccessChain 96(psout) 40
Store 101 97
- 102:94(PS_OUTPUT) Load 96(psout)
- ReturnValue 102
+ 104: 8(ptr) AccessChain 96(psout) 26
+ 105: 7(fvec4) Load 104
+ Store 103(Color) 105
+ 108: 100(ptr) AccessChain 96(psout) 40
+ 109: 6(float) Load 108
+ Store 107(Depth) 109
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out
index 082e142..4218c4f 100755
--- a/Test/baseResults/hlsl.scope.frag.out
+++ b/Test/baseResults/hlsl.scope.frag.out
@@ -2,9 +2,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:31 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global void)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:4 'x' (temp int)
0:? Sequence
@@ -38,6 +38,7 @@
0:29 0 (const int)
0:27 No loop body
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -46,9 +47,9 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:31 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global void)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:4 'x' (temp int)
0:? Sequence
@@ -82,22 +83,24 @@
0:29 0 (const int)
0:27 No loop body
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 36
+// Id's are bound by 39
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction"
+ EntryPoint Fragment 4 "PixelShaderFunction" 38
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "x"
Name 11 "x"
Name 14 "x"
Name 17 "x"
+ Name 38 "input"
+ Decorate 38(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -109,6 +112,9 @@
15: TypeVector 9(float) 3
16: TypePointer Function 15(fvec3)
19: 6(int) Constant 0
+ 36: TypeVector 9(float) 4
+ 37: TypePointer Input 36(fvec4)
+ 38(input): 37(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
8(x): 7(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out
index 78a3a5a..a37991d 100644
--- a/Test/baseResults/hlsl.semicolons.frag.out
+++ b/Test/baseResults/hlsl.semicolons.frag.out
@@ -2,11 +2,11 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:4 Function Definition: MyFunc( (global void)
+0:2 Function Definition: MyFunc( (global void)
0:2 Function Parameters:
0:8 Function Definition: MyFunc2( (global void)
0:8 Function Parameters:
-0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13 Function Definition: main( (global structure{temp 4-component vector of float color})
0:13 Function Parameters:
0:? Sequence
0:16 move second child to first child (temp 4-component vector of float)
@@ -19,9 +19,17 @@
0:16 1.000000
0:16 1.000000
0:16 1.000000
-0:17 Branch: Return with expression
-0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:17 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:17 color: direct index for structure (temp 4-component vector of float)
+0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:17 Constant:
+0:17 0 (const int)
+0:17 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
@@ -30,11 +38,11 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:4 Function Definition: MyFunc( (global void)
+0:2 Function Definition: MyFunc( (global void)
0:2 Function Parameters:
0:8 Function Definition: MyFunc2( (global void)
0:8 Function Parameters:
-0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13 Function Definition: main( (global structure{temp 4-component vector of float color})
0:13 Function Parameters:
0:? Sequence
0:16 move second child to first child (temp 4-component vector of float)
@@ -47,26 +55,35 @@
0:16 1.000000
0:16 1.000000
0:16 1.000000
-0:17 Branch: Return with expression
-0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Sequence
+0:? Sequence
+0:17 move second child to first child (temp 4-component vector of float)
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
+0:17 color: direct index for structure (temp 4-component vector of float)
+0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:17 Constant:
+0:17 0 (const int)
+0:17 Branch: Return
0:? Linker Objects
+0:? 'color' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 23
+// Id's are bound by 26
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main"
+ EntryPoint Fragment 4 "main" 22
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 6 "MyFunc("
Name 8 "MyFunc2("
Name 12 "PS_OUTPUT"
MemberName 12(PS_OUTPUT) 0 "color"
Name 14 "ps_output"
+ Name 22 "color"
+ Decorate 22(color) Location 0
2: TypeVoid
3: TypeFunction 2
10: TypeFloat 32
@@ -78,13 +95,17 @@
17: 10(float) Constant 1065353216
18: 11(fvec4) ConstantComposite 17 17 17 17
19: TypePointer Function 11(fvec4)
+ 21: TypePointer Output 11(fvec4)
+ 22(color): 21(ptr) Variable Output
4(main): 2 Function None 3
5: Label
14(ps_output): 13(ptr) Variable Function
20: 19(ptr) AccessChain 14(ps_output) 16
Store 20 18
- 21:12(PS_OUTPUT) Load 14(ps_output)
- ReturnValue 21
+ 23: 19(ptr) AccessChain 14(ps_output) 16
+ 24: 11(fvec4) Load 23
+ Store 22(color) 24
+ Return
FunctionEnd
6(MyFunc(): 2 Function None 3
7: Label
diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index e9b7389..c7fdf8d 100755
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'f' (in float)
@@ -42,8 +42,72 @@
0:10 Construct vec3 (temp 3-component vector of float)
0:10 Construct float (temp float)
0:10 'f' (in float)
-0:12 Branch: Return with expression
-0:12 'input' (in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (temp 2-component vector of float)
+0:11 'w' (temp 2-component vector of float)
+0:11 Constant:
+0:11 2.000000
+0:11 2.000000
+0:12 Sequence
+0:12 move second child to first child (temp float)
+0:12 'V' (temp float)
+0:12 Constant:
+0:12 1.000000
+0:13 Sequence
+0:13 move second child to first child (temp 3-component vector of float)
+0:13 'MyVal' (temp 3-component vector of float)
+0:13 Construct vec3 (temp 3-component vector of float)
+0:13 'V' (temp float)
+0:16 Compare Greater Than (temp bool)
+0:16 'foo' (temp 3-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:16 4.000000
+0:16 4.000000
+0:17 Compare Greater Than or Equal (temp bool)
+0:17 'foo' (temp 3-component vector of float)
+0:17 Constant:
+0:17 5.000000
+0:17 5.000000
+0:17 5.000000
+0:18 Compare Less Than (temp bool)
+0:18 Constant:
+0:18 6.000000
+0:18 6.000000
+0:18 6.000000
+0:18 'foo' (temp 3-component vector of float)
+0:19 Compare Less Than or Equal (temp bool)
+0:19 Constant:
+0:19 7.000000
+0:19 7.000000
+0:19 7.000000
+0:19 'foo' (temp 3-component vector of float)
+0:21 Compare Equal (temp bool)
+0:21 Construct vec4 (temp 4-component vector of float)
+0:21 direct index (temp float)
+0:21 'v' (temp 4-component vector of float)
+0:21 Constant:
+0:21 0 (const int)
+0:21 'v' (temp 4-component vector of float)
+0:22 Compare Not Equal (temp bool)
+0:22 Construct vec4 (temp 4-component vector of float)
+0:22 'f' (in float)
+0:22 'v' (temp 4-component vector of float)
+0:26 Compare Equal (temp bool)
+0:26 'f1' (temp 1-component vector of float)
+0:26 Construct float (temp 1-component vector of float)
+0:26 'v' (temp 4-component vector of float)
+0:27 Compare Less Than (temp bool)
+0:27 Construct float (temp 1-component vector of float)
+0:27 'v' (temp 4-component vector of float)
+0:27 'f1' (temp 1-component vector of float)
+0:28 Construct float (temp float)
+0:28 'f1' (temp 1-component vector of float)
+0:29 Construct vec3 (temp 3-component vector of float)
+0:29 Construct float (temp float)
+0:29 'f1' (temp 1-component vector of float)
+0:31 Branch: Return with expression
+0:31 'input' (in 4-component vector of float)
0:? Linker Objects
@@ -53,7 +117,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'f' (in float)
@@ -93,26 +157,94 @@
0:10 Construct vec3 (temp 3-component vector of float)
0:10 Construct float (temp float)
0:10 'f' (in float)
-0:12 Branch: Return with expression
-0:12 'input' (in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (temp 2-component vector of float)
+0:11 'w' (temp 2-component vector of float)
+0:11 Constant:
+0:11 2.000000
+0:11 2.000000
+0:12 Sequence
+0:12 move second child to first child (temp float)
+0:12 'V' (temp float)
+0:12 Constant:
+0:12 1.000000
+0:13 Sequence
+0:13 move second child to first child (temp 3-component vector of float)
+0:13 'MyVal' (temp 3-component vector of float)
+0:13 Construct vec3 (temp 3-component vector of float)
+0:13 'V' (temp float)
+0:16 Compare Greater Than (temp bool)
+0:16 'foo' (temp 3-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:16 4.000000
+0:16 4.000000
+0:17 Compare Greater Than or Equal (temp bool)
+0:17 'foo' (temp 3-component vector of float)
+0:17 Constant:
+0:17 5.000000
+0:17 5.000000
+0:17 5.000000
+0:18 Compare Less Than (temp bool)
+0:18 Constant:
+0:18 6.000000
+0:18 6.000000
+0:18 6.000000
+0:18 'foo' (temp 3-component vector of float)
+0:19 Compare Less Than or Equal (temp bool)
+0:19 Constant:
+0:19 7.000000
+0:19 7.000000
+0:19 7.000000
+0:19 'foo' (temp 3-component vector of float)
+0:21 Compare Equal (temp bool)
+0:21 Construct vec4 (temp 4-component vector of float)
+0:21 direct index (temp float)
+0:21 'v' (temp 4-component vector of float)
+0:21 Constant:
+0:21 0 (const int)
+0:21 'v' (temp 4-component vector of float)
+0:22 Compare Not Equal (temp bool)
+0:22 Construct vec4 (temp 4-component vector of float)
+0:22 'f' (in float)
+0:22 'v' (temp 4-component vector of float)
+0:26 Compare Equal (temp bool)
+0:26 'f1' (temp 1-component vector of float)
+0:26 Construct float (temp 1-component vector of float)
+0:26 'v' (temp 4-component vector of float)
+0:27 Compare Less Than (temp bool)
+0:27 Construct float (temp 1-component vector of float)
+0:27 'v' (temp 4-component vector of float)
+0:27 'f1' (temp 1-component vector of float)
+0:28 Construct float (temp float)
+0:28 'f1' (temp 1-component vector of float)
+0:29 Construct vec3 (temp 3-component vector of float)
+0:29 Construct float (temp float)
+0:29 'f1' (temp 1-component vector of float)
+0:31 Branch: Return with expression
+0:31 'input' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 32
+// Id's are bound by 84
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "main"
Name 13 "PixelShaderFunction(vf4;f1;"
Name 11 "input"
Name 12 "f"
Name 15 "v"
Name 24 "u"
+ Name 31 "w"
+ Name 33 "V"
+ Name 34 "MyVal"
+ Name 37 "foo"
+ Name 69 "f1"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -128,6 +260,21 @@
23: TypePointer Function 22(fvec3)
25: 22(fvec3) ConstantComposite 16 16 16
26: 22(fvec3) ConstantComposite 18 18 18
+ 29: TypeVector 6(float) 2
+ 30: TypePointer Function 29(fvec2)
+ 32: 29(fvec2) ConstantComposite 18 18
+ 39: 6(float) Constant 1082130432
+ 40: 22(fvec3) ConstantComposite 39 39 39
+ 41: TypeBool
+ 44: 6(float) Constant 1084227584
+ 45: 22(fvec3) ConstantComposite 44 44 44
+ 47: 6(float) Constant 1086324736
+ 48: 22(fvec3) ConstantComposite 47 47 47
+ 51: 6(float) Constant 1088421888
+ 52: 22(fvec3) ConstantComposite 51 51 51
+ 55: TypeInt 32 0
+ 56: 55(int) Constant 0
+ 61: TypeVector 41(bool) 4
4(main): 2 Function None 3
5: Label
FunctionEnd
@@ -137,6 +284,11 @@
14: Label
15(v): 8(ptr) Variable Function
24(u): 23(ptr) Variable Function
+ 31(w): 30(ptr) Variable Function
+ 33(V): 9(ptr) Variable Function
+ 34(MyVal): 23(ptr) Variable Function
+ 37(foo): 23(ptr) Variable Function
+ 69(f1): 9(ptr) Variable Function
Store 15(v) 17
Store 15(v) 19
20: 6(float) Load 12(f)
@@ -147,6 +299,41 @@
27: 6(float) Load 12(f)
28: 22(fvec3) CompositeConstruct 27 27 27
Store 24(u) 28
- 29: 7(fvec4) Load 11(input)
- ReturnValue 29
+ Store 31(w) 32
+ Store 33(V) 16
+ 35: 6(float) Load 33(V)
+ 36: 22(fvec3) CompositeConstruct 35 35 35
+ Store 34(MyVal) 36
+ 38: 22(fvec3) Load 37(foo)
+ 42: 41(bool) FOrdGreaterThan 38 40
+ 43: 22(fvec3) Load 37(foo)
+ 46: 41(bool) FOrdGreaterThanEqual 43 45
+ 49: 22(fvec3) Load 37(foo)
+ 50: 41(bool) FOrdLessThan 48 49
+ 53: 22(fvec3) Load 37(foo)
+ 54: 41(bool) FOrdLessThanEqual 52 53
+ 57: 9(ptr) AccessChain 15(v) 56
+ 58: 6(float) Load 57
+ 59: 7(fvec4) CompositeConstruct 58 58 58 58
+ 60: 7(fvec4) Load 15(v)
+ 62: 61(bvec4) FOrdEqual 59 60
+ 63: 41(bool) All 62
+ 64: 6(float) Load 12(f)
+ 65: 7(fvec4) CompositeConstruct 64 64 64 64
+ 66: 7(fvec4) Load 15(v)
+ 67: 61(bvec4) FOrdNotEqual 65 66
+ 68: 41(bool) Any 67
+ 70: 6(float) Load 69(f1)
+ 71: 7(fvec4) Load 15(v)
+ 72: 6(float) CompositeExtract 71 0
+ 73: 41(bool) FOrdEqual 70 72
+ 74: 7(fvec4) Load 15(v)
+ 75: 6(float) CompositeExtract 74 0
+ 76: 6(float) Load 69(f1)
+ 77: 41(bool) FOrdLessThan 75 76
+ 78: 6(float) Load 69(f1)
+ 79: 6(float) Load 69(f1)
+ 80: 22(fvec3) CompositeConstruct 79 79 79
+ 81: 7(fvec4) Load 11(input)
+ ReturnValue 81
FunctionEnd
diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out
index e145ab1..e4940ae 100755
--- a/Test/baseResults/hlsl.sin.frag.out
+++ b/Test/baseResults/hlsl.sin.frag.out
@@ -2,14 +2,19 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 sine (global 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 sine (global 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -18,36 +23,46 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:5 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
-0:3 Branch: Return with expression
-0:3 sine (global 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 sine (global 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 13
+// Id's are bound by 15
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 9
+ EntryPoint Fragment 4 "PixelShaderFunction" 9 11
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
- Name 9 "input"
+ Name 9 "@entryPointOutput"
+ Name 11 "input"
+ Decorate 9(@entryPointOutput) Location 0
+ Decorate 11(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
- 8: TypePointer Input 7(fvec4)
- 9(input): 8(ptr) Variable Input
+ 8: TypePointer Output 7(fvec4)
+9(@entryPointOutput): 8(ptr) Variable Output
+ 10: TypePointer Input 7(fvec4)
+ 11(input): 10(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
- 10: 7(fvec4) Load 9(input)
- 11: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 10
- ReturnValue 11
+ 12: 7(fvec4) Load 11(input)
+ 13: 7(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 12
+ Store 9(@entryPointOutput) 13
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out
new file mode 100755
index 0000000..6016f52
--- /dev/null
+++ b/Test/baseResults/hlsl.string.frag.out
@@ -0,0 +1,64 @@
+hlsl.string.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10 Function Definition: main(f1; (global float)
+0:10 Function Parameters:
+0:10 'f' (layout(location=0 ) in float)
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:11 'f' (layout(location=0 ) in float)
+0:11 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:? 'f' (layout(location=0 ) in float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10 Function Definition: main(f1; (global float)
+0:10 Function Parameters:
+0:10 'f' (layout(location=0 ) in float)
+0:? Sequence
+0:11 Sequence
+0:11 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:11 'f' (layout(location=0 ) in float)
+0:11 Branch: Return
+0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:? 'f' (layout(location=0 ) in float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 13
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 10
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 8 "@entryPointOutput"
+ Name 10 "f"
+ Decorate 8(@entryPointOutput) Location 0
+ Decorate 10(f) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Output 6(float)
+8(@entryPointOutput): 7(ptr) Variable Output
+ 9: TypePointer Input 6(float)
+ 10(f): 9(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 11: 6(float) Load 10(f)
+ Store 8(@entryPointOutput) 11
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out
new file mode 100644
index 0000000..42885bc
--- /dev/null
+++ b/Test/baseResults/hlsl.stringtoken.frag.out
@@ -0,0 +1,112 @@
+hlsl.stringtoken.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:16 Function Parameters:
+0:? Sequence
+0:18 move second child to first child (temp 4-component vector of float)
+0:18 Color: direct index for structure (temp 4-component vector of float)
+0:18 'psout' (temp structure{temp 4-component vector of float Color})
+0:18 Constant:
+0:18 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 1.000000
+0:? Sequence
+0:? Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:19 Color: direct index for structure (temp 4-component vector of float)
+0:19 'psout' (temp structure{temp 4-component vector of float Color})
+0:19 Constant:
+0:19 0 (const int)
+0:19 Branch: Return
+0:? Linker Objects
+0:? 'TestTexture' (uniform texture2D)
+0:? 'TestUF' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:16 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:16 Function Parameters:
+0:? Sequence
+0:18 move second child to first child (temp 4-component vector of float)
+0:18 Color: direct index for structure (temp 4-component vector of float)
+0:18 'psout' (temp structure{temp 4-component vector of float Color})
+0:18 Constant:
+0:18 0 (const int)
+0:? Constant:
+0:? 0.000000
+0:? 0.000000
+0:? 0.000000
+0:? 1.000000
+0:? Sequence
+0:? Sequence
+0:19 move second child to first child (temp 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+0:19 Color: direct index for structure (temp 4-component vector of float)
+0:19 'psout' (temp structure{temp 4-component vector of float Color})
+0:19 Constant:
+0:19 0 (const int)
+0:19 Branch: Return
+0:? Linker Objects
+0:? 'TestTexture' (uniform texture2D)
+0:? 'TestUF' (uniform 4-component vector of float)
+0:? 'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 28
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 19
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 8 "PS_OUTPUT"
+ MemberName 8(PS_OUTPUT) 0 "Color"
+ Name 10 "psout"
+ Name 19 "Color"
+ Name 25 "TestTexture"
+ Name 27 "TestUF"
+ Decorate 19(Color) Location 0
+ Decorate 25(TestTexture) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8(PS_OUTPUT): TypeStruct 7(fvec4)
+ 9: TypePointer Function 8(PS_OUTPUT)
+ 11: TypeInt 32 1
+ 12: 11(int) Constant 0
+ 13: 6(float) Constant 0
+ 14: 6(float) Constant 1065353216
+ 15: 7(fvec4) ConstantComposite 13 13 13 14
+ 16: TypePointer Function 7(fvec4)
+ 18: TypePointer Output 7(fvec4)
+ 19(Color): 18(ptr) Variable Output
+ 23: TypeImage 6(float) 2D sampled format:Unknown
+ 24: TypePointer UniformConstant 23
+ 25(TestTexture): 24(ptr) Variable UniformConstant
+ 26: TypePointer UniformConstant 7(fvec4)
+ 27(TestUF): 26(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 10(psout): 9(ptr) Variable Function
+ 17: 16(ptr) AccessChain 10(psout) 12
+ Store 17 15
+ 20: 16(ptr) AccessChain 10(psout) 12
+ 21: 7(fvec4) Load 20
+ Store 19(Color) 21
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 02eed4e..3a44495 100755
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -6,9 +6,10 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:43 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
0:34 Function Parameters:
-0:34 'input' (in 4-component vector of float)
+0:34 'input' (layout(location=0 ) in 4-component vector of float)
+0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Sequence
0:39 Compare Equal (temp bool)
0:39 's3' (temp structure{temp 3-component vector of bool b3})
@@ -18,18 +19,27 @@
0:40 's2' (global structure{temp 4-component vector of float i})
0:40 Constant:
0:40 0 (const int)
-0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
-0:40 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
-0:40 Constant:
-0:40 7 (const int)
-0:42 Branch: Return with expression
-0:42 'input' (in 4-component vector of float)
+0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
+0:42 Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:42 'input' (layout(location=0 ) in 4-component vector of float)
+0:42 Branch: Return
0:? Linker Objects
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (global structure{temp 4-component vector of float i})
-0:? 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'a' (layout(location=1 ) smooth in 4-component vector of float)
+0:? 'b' (layout(location=2 ) flat in bool)
+0:? 'c' (layout(location=3 ) centroid noperspective in 1-component vector of float)
+0:? 'd' (layout(location=4 ) centroid sample in 2-component vector of float)
+0:? 'ff1' (in bool Face)
+0:? 'ff2' (layout(location=5 offset=4 ) in bool)
+0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool)
+0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
Linked fragment stage:
@@ -38,9 +48,10 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:43 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
0:34 Function Parameters:
-0:34 'input' (in 4-component vector of float)
+0:34 'input' (layout(location=0 ) in 4-component vector of float)
+0:34 's' (in structure{temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:? Sequence
0:39 Compare Equal (temp bool)
0:39 's3' (temp structure{temp 3-component vector of bool b3})
@@ -50,29 +61,37 @@
0:40 's2' (global structure{temp 4-component vector of float i})
0:40 Constant:
0:40 0 (const int)
-0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord)
-0:40 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
-0:40 Constant:
-0:40 7 (const int)
-0:42 Branch: Return with expression
-0:42 'input' (in 4-component vector of float)
+0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
+0:42 Sequence
+0:42 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:42 'input' (layout(location=0 ) in 4-component vector of float)
+0:42 Branch: Return
0:? Linker Objects
0:? 's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:? 's2' (global structure{temp 4-component vector of float i})
-0:? 's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float FragCoord ff4})
0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'a' (layout(location=1 ) smooth in 4-component vector of float)
+0:? 'b' (layout(location=2 ) flat in bool)
+0:? 'c' (layout(location=3 ) centroid noperspective in 1-component vector of float)
+0:? 'd' (layout(location=4 ) centroid sample in 2-component vector of float)
+0:? 'ff1' (in bool Face)
+0:? 'ff2' (layout(location=5 offset=4 ) in bool)
+0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool)
+0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 44
+// Id's are bound by 52
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 34
+ EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 41 43 45 48 49 50 51
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "FS"
MemberName 8(FS) 0 "b3"
@@ -80,31 +99,47 @@
Name 19 ""
MemberName 19 0 "i"
Name 21 "s2"
- Name 25 ""
- MemberName 25 0 "a"
- MemberName 25 1 "b"
- MemberName 25 2 "c"
- MemberName 25 3 "d"
- MemberName 25 4 "ff1"
- MemberName 25 5 "ff2"
- MemberName 25 6 "ff3"
- MemberName 25 7 "ff4"
- Name 27 "s4"
- Name 34 "input"
- Name 37 "myS"
- MemberName 37(myS) 0 "b"
- MemberName 37(myS) 1 "c"
- MemberName 37(myS) 2 "a"
- MemberName 37(myS) 3 "d"
- Name 39 "s1"
- Name 42 "ff5"
- Name 43 "ff6"
- MemberDecorate 25 4 BuiltIn FrontFacing
- MemberDecorate 25 7 BuiltIn FragCoord
- Decorate 42(ff5) Offset 20
- Decorate 42(ff5) Binding 5
- Decorate 43(ff6) Offset 36
- Decorate 43(ff6) Binding 8
+ Name 25 "ff4"
+ Name 30 "@entryPointOutput"
+ Name 31 "input"
+ Name 34 "myS"
+ MemberName 34(myS) 0 "b"
+ MemberName 34(myS) 1 "c"
+ MemberName 34(myS) 2 "a"
+ MemberName 34(myS) 3 "d"
+ Name 36 "s1"
+ Name 39 "ff5"
+ Name 40 "ff6"
+ Name 41 "a"
+ Name 43 "b"
+ Name 45 "c"
+ Name 48 "d"
+ Name 49 "ff1"
+ Name 50 "ff2"
+ Name 51 "ff3"
+ Decorate 25(ff4) Offset 4
+ Decorate 25(ff4) Location 7
+ Decorate 25(ff4) Binding 0
+ Decorate 30(@entryPointOutput) Location 0
+ Decorate 31(input) Location 0
+ Decorate 39(ff5) Offset 20
+ Decorate 39(ff5) Binding 5
+ Decorate 40(ff6) Offset 36
+ Decorate 40(ff6) Binding 8
+ Decorate 41(a) Location 1
+ Decorate 43(b) Flat
+ Decorate 43(b) Location 2
+ Decorate 45(c) NoPerspective
+ Decorate 45(c) Centroid
+ Decorate 45(c) Location 3
+ Decorate 48(d) Centroid
+ Decorate 48(d) Location 4
+ Decorate 49(ff1) BuiltIn FrontFacing
+ Decorate 50(ff2) Offset 4
+ Decorate 50(ff2) Location 5
+ Decorate 51(ff3) Offset 4
+ Decorate 51(ff3) Location 6
+ Decorate 51(ff3) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeBool
@@ -118,21 +153,30 @@
21(s2): 20(ptr) Variable Private
22: TypeInt 32 1
23: 22(int) Constant 0
- 24: TypeVector 17(float) 2
- 25: TypeStruct 18(fvec4) 6(bool) 17(float) 24(fvec2) 6(bool) 6(bool) 6(bool) 18(fvec4)
- 26: TypePointer Private 25(struct)
- 27(s4): 26(ptr) Variable Private
- 28: 22(int) Constant 7
- 29: TypePointer Private 18(fvec4)
- 33: TypePointer Input 18(fvec4)
- 34(input): 33(ptr) Variable Input
- 37(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
- 38: TypePointer Private 37(myS)
- 39(s1): 38(ptr) Variable Private
- 40: TypeVector 17(float) 3
- 41: TypePointer Private 40(fvec3)
- 42(ff5): 41(ptr) Variable Private
- 43(ff6): 41(ptr) Variable Private
+ 24: TypePointer Input 18(fvec4)
+ 25(ff4): 24(ptr) Variable Input
+ 27: TypePointer Private 18(fvec4)
+ 29: TypePointer Output 18(fvec4)
+30(@entryPointOutput): 29(ptr) Variable Output
+ 31(input): 24(ptr) Variable Input
+ 34(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
+ 35: TypePointer Private 34(myS)
+ 36(s1): 35(ptr) Variable Private
+ 37: TypeVector 17(float) 3
+ 38: TypePointer Private 37(fvec3)
+ 39(ff5): 38(ptr) Variable Private
+ 40(ff6): 38(ptr) Variable Private
+ 41(a): 24(ptr) Variable Input
+ 42: TypePointer Input 6(bool)
+ 43(b): 42(ptr) Variable Input
+ 44: TypePointer Input 17(float)
+ 45(c): 44(ptr) Variable Input
+ 46: TypeVector 17(float) 2
+ 47: TypePointer Input 46(fvec2)
+ 48(d): 47(ptr) Variable Input
+ 49(ff1): 42(ptr) Variable Input
+ 50(ff2): 42(ptr) Variable Input
+ 51(ff3): 42(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
10(s3): 9(ptr) Variable Function
@@ -142,10 +186,10 @@
14: 7(bvec3) CompositeExtract 12 0
15: 7(bvec3) LogicalEqual 13 14
16: 6(bool) All 15
- 30: 29(ptr) AccessChain 27(s4) 28
- 31: 18(fvec4) Load 30
- 32: 29(ptr) AccessChain 21(s2) 23
- Store 32 31
- 35: 18(fvec4) Load 34(input)
- ReturnValue 35
+ 26: 18(fvec4) Load 25(ff4)
+ 28: 27(ptr) AccessChain 21(s2) 23
+ Store 28 26
+ 32: 18(fvec4) Load 31(input)
+ Store 30(@entryPointOutput) 32
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out
new file mode 100755
index 0000000..b27f210
--- /dev/null
+++ b/Test/baseResults/hlsl.structin.vert.out
@@ -0,0 +1,226 @@
+hlsl.structin.vert
+Shader version: 450
+0:? Sequence
+0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 Function Parameters:
+0:8 'd' (layout(location=0 ) in 4-component vector of float)
+0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'e' (layout(location=5 ) in 4-component vector of float)
+0:? Sequence
+0:11 move second child to first child (temp 4-component vector of float)
+0:11 b: direct index for structure (temp 4-component vector of float)
+0:11 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 Constant:
+0:11 2 (const int)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 direct index (layout(location=1 ) temp 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index (layout(location=1 ) temp 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Construct vec4 (temp 4-component vector of float)
+0:11 Convert uint to float (temp float)
+0:11 direct index (temp uint)
+0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
+0:11 Constant:
+0:11 0 (const int)
+0:11 'd' (layout(location=0 ) in 4-component vector of float)
+0:11 'e' (layout(location=5 ) in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:13 move second child to first child (temp 2-element array of 4-component vector of float)
+0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
+0:13 m: direct index for structure (temp 2-element array of 4-component vector of float)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child (temp 2-component vector of uint)
+0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
+0:13 coord: direct index for structure (temp 2-component vector of uint)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 1 (const int)
+0:13 move second child to first child (temp 4-component vector of float)
+0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
+0:13 b: direct index for structure (temp 4-component vector of float)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 2 (const int)
+0:13 Branch: Return
+0:? Linker Objects
+0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
+0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
+0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
+0:? 'd' (layout(location=0 ) in 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
+0:? 'b' (layout(location=4 ) in 4-component vector of float)
+0:? 'e' (layout(location=5 ) in 4-component vector of float)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+0:? Sequence
+0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 Function Parameters:
+0:8 'd' (layout(location=0 ) in 4-component vector of float)
+0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:8 'e' (layout(location=5 ) in 4-component vector of float)
+0:? Sequence
+0:11 move second child to first child (temp 4-component vector of float)
+0:11 b: direct index for structure (temp 4-component vector of float)
+0:11 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:11 Constant:
+0:11 2 (const int)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 add (temp 4-component vector of float)
+0:11 direct index (layout(location=1 ) temp 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:11 Constant:
+0:11 1 (const int)
+0:11 direct index (layout(location=1 ) temp 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:11 Constant:
+0:11 0 (const int)
+0:11 Construct vec4 (temp 4-component vector of float)
+0:11 Convert uint to float (temp float)
+0:11 direct index (temp uint)
+0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
+0:11 Constant:
+0:11 0 (const int)
+0:11 'd' (layout(location=0 ) in 4-component vector of float)
+0:11 'e' (layout(location=5 ) in 4-component vector of float)
+0:? Sequence
+0:? Sequence
+0:13 move second child to first child (temp 2-element array of 4-component vector of float)
+0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
+0:13 m: direct index for structure (temp 2-element array of 4-component vector of float)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 0 (const int)
+0:13 move second child to first child (temp 2-component vector of uint)
+0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
+0:13 coord: direct index for structure (temp 2-component vector of uint)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 1 (const int)
+0:13 move second child to first child (temp 4-component vector of float)
+0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
+0:13 b: direct index for structure (temp 4-component vector of float)
+0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, temp 4-component vector of float b})
+0:13 Constant:
+0:13 2 (const int)
+0:13 Branch: Return
+0:? Linker Objects
+0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
+0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
+0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
+0:? 'd' (layout(location=0 ) in 4-component vector of float)
+0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
+0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
+0:? 'b' (layout(location=4 ) in 4-component vector of float)
+0:? 'e' (layout(location=5 ) in 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 60
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 18 28 36 39 45 50 55 59
+ Name 4 "main"
+ Name 12 "VI"
+ MemberName 12(VI) 0 "m"
+ MemberName 12(VI) 1 "coord"
+ MemberName 12(VI) 2 "b"
+ Name 14 "local"
+ Name 18 "m"
+ Name 28 "coord"
+ Name 36 "d"
+ Name 39 "e"
+ Name 45 "m"
+ Name 50 "coord"
+ Name 55 "b"
+ Name 59 "b"
+ Decorate 18(m) Location 1
+ Decorate 28(coord) Location 3
+ Decorate 36(d) Location 0
+ Decorate 39(e) Location 5
+ Decorate 45(m) Location 0
+ Decorate 50(coord) Location 2
+ Decorate 55(b) Location 3
+ Decorate 59(b) Location 4
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 2
+ 10: TypeArray 7(fvec4) 9
+ 11: TypeVector 8(int) 2
+ 12(VI): TypeStruct 10 11(ivec2) 7(fvec4)
+ 13: TypePointer Function 12(VI)
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 2
+ 17: TypePointer Input 10
+ 18(m): 17(ptr) Variable Input
+ 19: 15(int) Constant 1
+ 20: TypePointer Input 7(fvec4)
+ 23: 15(int) Constant 0
+ 27: TypePointer Input 11(ivec2)
+ 28(coord): 27(ptr) Variable Input
+ 29: 8(int) Constant 0
+ 30: TypePointer Input 8(int)
+ 36(d): 20(ptr) Variable Input
+ 39(e): 20(ptr) Variable Input
+ 42: TypePointer Function 7(fvec4)
+ 44: TypePointer Output 10
+ 45(m): 44(ptr) Variable Output
+ 46: TypePointer Function 10
+ 49: TypePointer Output 11(ivec2)
+ 50(coord): 49(ptr) Variable Output
+ 51: TypePointer Function 11(ivec2)
+ 54: TypePointer Output 7(fvec4)
+ 55(b): 54(ptr) Variable Output
+ 59(b): 20(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 14(local): 13(ptr) Variable Function
+ 21: 20(ptr) AccessChain 18(m) 19
+ 22: 7(fvec4) Load 21
+ 24: 20(ptr) AccessChain 18(m) 23
+ 25: 7(fvec4) Load 24
+ 26: 7(fvec4) FAdd 22 25
+ 31: 30(ptr) AccessChain 28(coord) 29
+ 32: 8(int) Load 31
+ 33: 6(float) ConvertUToF 32
+ 34: 7(fvec4) CompositeConstruct 33 33 33 33
+ 35: 7(fvec4) FAdd 26 34
+ 37: 7(fvec4) Load 36(d)
+ 38: 7(fvec4) FAdd 35 37
+ 40: 7(fvec4) Load 39(e)
+ 41: 7(fvec4) FAdd 38 40
+ 43: 42(ptr) AccessChain 14(local) 16
+ Store 43 41
+ 47: 46(ptr) AccessChain 14(local) 23
+ 48: 10 Load 47
+ Store 45(m) 48
+ 52: 51(ptr) AccessChain 14(local) 19
+ 53: 11(ivec2) Load 52
+ Store 50(coord) 53
+ 56: 42(ptr) AccessChain 14(local) 16
+ 57: 7(fvec4) Load 56
+ Store 55(b) 57
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out
index c4af33f..abf777a 100755
--- a/Test/baseResults/hlsl.switch.frag.out
+++ b/Test/baseResults/hlsl.switch.frag.out
@@ -2,16 +2,16 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:56 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
-0:2 'c' (in int)
-0:2 'd' (in int)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
+0:2 'c' (layout(location=1 ) in int)
+0:2 'd' (layout(location=2 ) in int)
0:? Sequence
-0:3 'c' (in int)
+0:3 'c' (layout(location=1 ) in int)
0:7 switch
0:7 condition
-0:7 'c' (in int)
+0:7 'c' (layout(location=1 ) in int)
0:7 body
0:7 Sequence
0:9 default:
@@ -19,7 +19,7 @@
0:7 Branch: Break
0:12 switch
0:12 condition
-0:12 'c' (in int)
+0:12 'c' (layout(location=1 ) in int)
0:12 body
0:12 Sequence
0:13 case: with expression
@@ -27,18 +27,18 @@
0:13 1 (const int)
0:? Sequence
0:14 Pre-Increment (temp 4-component vector of float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 2 (const int)
0:? Sequence
0:17 Pre-Decrement (temp 4-component vector of float)
-0:17 'input' (in 4-component vector of float)
+0:17 'input' (layout(location=0 ) in 4-component vector of float)
0:18 Branch: Break
0:21 switch
0:21 condition
-0:21 'c' (in int)
+0:21 'c' (layout(location=1 ) in int)
0:21 body
0:21 Sequence
0:22 case: with expression
@@ -46,7 +46,7 @@
0:22 1 (const int)
0:? Sequence
0:23 Pre-Increment (temp 4-component vector of float)
-0:23 'input' (in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
0:24 Branch: Break
0:25 case: with expression
0:25 Constant:
@@ -54,7 +54,7 @@
0:? Sequence
0:26 switch
0:26 condition
-0:26 'd' (in int)
+0:26 'd' (layout(location=2 ) in int)
0:26 body
0:26 Sequence
0:27 case: with expression
@@ -62,7 +62,7 @@
0:27 2 (const int)
0:? Sequence
0:28 add second child into first child (temp 4-component vector of float)
-0:28 'input' (in 4-component vector of float)
+0:28 'input' (layout(location=0 ) in 4-component vector of float)
0:28 Constant:
0:28 2.000000
0:29 Branch: Break
@@ -71,7 +71,7 @@
0:30 3 (const int)
0:? Sequence
0:31 add second child into first child (temp 4-component vector of float)
-0:31 'input' (in 4-component vector of float)
+0:31 'input' (layout(location=0 ) in 4-component vector of float)
0:31 Constant:
0:31 3.000000
0:32 Branch: Break
@@ -79,12 +79,12 @@
0:35 default:
0:? Sequence
0:36 add second child into first child (temp 4-component vector of float)
-0:36 'input' (in 4-component vector of float)
+0:36 'input' (layout(location=0 ) in 4-component vector of float)
0:36 Constant:
0:36 4.000000
0:39 switch
0:39 condition
-0:39 'c' (in int)
+0:39 'c' (layout(location=1 ) in int)
0:39 body
0:39 Sequence
0:40 case: with expression
@@ -94,7 +94,7 @@
0:39 Branch: Break
0:43 switch
0:43 condition
-0:43 'c' (in int)
+0:43 'c' (layout(location=1 ) in int)
0:43 body
0:43 Sequence
0:44 case: with expression
@@ -108,7 +108,7 @@
0:46 3 (const int)
0:? Sequence
0:47 Pre-Increment (temp 4-component vector of float)
-0:47 'input' (in 4-component vector of float)
+0:47 'input' (layout(location=0 ) in 4-component vector of float)
0:48 Branch: Break
0:49 case: with expression
0:49 Constant:
@@ -118,10 +118,17 @@
0:50 5 (const int)
0:? Sequence
0:51 Pre-Decrement (temp 4-component vector of float)
-0:51 'input' (in 4-component vector of float)
-0:54 Branch: Return with expression
-0:54 'input' (in 4-component vector of float)
+0:51 'input' (layout(location=0 ) in 4-component vector of float)
+0:54 Sequence
+0:54 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:54 'input' (layout(location=0 ) in 4-component vector of float)
+0:54 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'c' (layout(location=1 ) in int)
+0:? 'd' (layout(location=2 ) in int)
Linked fragment stage:
@@ -130,16 +137,16 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:56 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4;i1;i1; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
-0:2 'c' (in int)
-0:2 'd' (in int)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
+0:2 'c' (layout(location=1 ) in int)
+0:2 'd' (layout(location=2 ) in int)
0:? Sequence
-0:3 'c' (in int)
+0:3 'c' (layout(location=1 ) in int)
0:7 switch
0:7 condition
-0:7 'c' (in int)
+0:7 'c' (layout(location=1 ) in int)
0:7 body
0:7 Sequence
0:9 default:
@@ -147,7 +154,7 @@
0:7 Branch: Break
0:12 switch
0:12 condition
-0:12 'c' (in int)
+0:12 'c' (layout(location=1 ) in int)
0:12 body
0:12 Sequence
0:13 case: with expression
@@ -155,18 +162,18 @@
0:13 1 (const int)
0:? Sequence
0:14 Pre-Increment (temp 4-component vector of float)
-0:14 'input' (in 4-component vector of float)
+0:14 'input' (layout(location=0 ) in 4-component vector of float)
0:15 Branch: Break
0:16 case: with expression
0:16 Constant:
0:16 2 (const int)
0:? Sequence
0:17 Pre-Decrement (temp 4-component vector of float)
-0:17 'input' (in 4-component vector of float)
+0:17 'input' (layout(location=0 ) in 4-component vector of float)
0:18 Branch: Break
0:21 switch
0:21 condition
-0:21 'c' (in int)
+0:21 'c' (layout(location=1 ) in int)
0:21 body
0:21 Sequence
0:22 case: with expression
@@ -174,7 +181,7 @@
0:22 1 (const int)
0:? Sequence
0:23 Pre-Increment (temp 4-component vector of float)
-0:23 'input' (in 4-component vector of float)
+0:23 'input' (layout(location=0 ) in 4-component vector of float)
0:24 Branch: Break
0:25 case: with expression
0:25 Constant:
@@ -182,7 +189,7 @@
0:? Sequence
0:26 switch
0:26 condition
-0:26 'd' (in int)
+0:26 'd' (layout(location=2 ) in int)
0:26 body
0:26 Sequence
0:27 case: with expression
@@ -190,7 +197,7 @@
0:27 2 (const int)
0:? Sequence
0:28 add second child into first child (temp 4-component vector of float)
-0:28 'input' (in 4-component vector of float)
+0:28 'input' (layout(location=0 ) in 4-component vector of float)
0:28 Constant:
0:28 2.000000
0:29 Branch: Break
@@ -199,7 +206,7 @@
0:30 3 (const int)
0:? Sequence
0:31 add second child into first child (temp 4-component vector of float)
-0:31 'input' (in 4-component vector of float)
+0:31 'input' (layout(location=0 ) in 4-component vector of float)
0:31 Constant:
0:31 3.000000
0:32 Branch: Break
@@ -207,12 +214,12 @@
0:35 default:
0:? Sequence
0:36 add second child into first child (temp 4-component vector of float)
-0:36 'input' (in 4-component vector of float)
+0:36 'input' (layout(location=0 ) in 4-component vector of float)
0:36 Constant:
0:36 4.000000
0:39 switch
0:39 condition
-0:39 'c' (in int)
+0:39 'c' (layout(location=1 ) in int)
0:39 body
0:39 Sequence
0:40 case: with expression
@@ -222,7 +229,7 @@
0:39 Branch: Break
0:43 switch
0:43 condition
-0:43 'c' (in int)
+0:43 'c' (layout(location=1 ) in int)
0:43 body
0:43 Sequence
0:44 case: with expression
@@ -236,7 +243,7 @@
0:46 3 (const int)
0:? Sequence
0:47 Pre-Increment (temp 4-component vector of float)
-0:47 'input' (in 4-component vector of float)
+0:47 'input' (layout(location=0 ) in 4-component vector of float)
0:48 Branch: Break
0:49 case: with expression
0:49 Constant:
@@ -246,25 +253,36 @@
0:50 5 (const int)
0:? Sequence
0:51 Pre-Decrement (temp 4-component vector of float)
-0:51 'input' (in 4-component vector of float)
-0:54 Branch: Return with expression
-0:54 'input' (in 4-component vector of float)
+0:51 'input' (layout(location=0 ) in 4-component vector of float)
+0:54 Sequence
+0:54 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:54 'input' (layout(location=0 ) in 4-component vector of float)
+0:54 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
+0:? 'c' (layout(location=1 ) in int)
+0:? 'd' (layout(location=2 ) in int)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 82
+// Id's are bound by 84
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 8 21 41
+ EntryPoint Fragment 4 "PixelShaderFunction" 8 21 41 81
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 8 "c"
Name 21 "input"
Name 41 "d"
+ Name 81 "@entryPointOutput"
+ Decorate 8(c) Location 1
+ Decorate 21(input) Location 0
+ Decorate 41(d) Location 2
+ Decorate 81(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -279,6 +297,8 @@
46: 18(float) Constant 1073741824
51: 18(float) Constant 1077936128
58: 18(float) Constant 1082130432
+ 80: TypePointer Output 19(fvec4)
+81(@entryPointOutput): 80(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
9: 6(int) Load 8(c)
@@ -371,6 +391,7 @@
Store 21(input) 78
Branch 71
71: Label
- 80: 19(fvec4) Load 21(input)
- ReturnValue 80
+ 82: 19(fvec4) Load 21(input)
+ Store 81(@entryPointOutput) 82
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index 7bb2818..0bc4bd0 100755
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -10,7 +10,7 @@
0:? 0.500000
0:? 0.000000
0:? 1.000000
-0:7 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:4 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
@@ -50,7 +50,7 @@
0:? 0.500000
0:? 0.000000
0:? 1.000000
-0:7 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
+0:4 Function Definition: ShaderFunction(vf4; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:? Sequence
@@ -84,7 +84,6 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 11 "ShaderFunction(vf4;"
Name 10 "input"
diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index 5acb877..f526086 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:48 Function Definition: PixelShaderFunction( (global float)
+0:3 Function Definition: PixelShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
@@ -192,8 +192,8 @@
0:? 14.000000
0:? 15.000000
0:35 Sequence
-0:35 move second child to first child (temp 3X2 matrix of float)
-0:35 'r61' (temp 3X2 matrix of float)
+0:35 move second child to first child (temp 2X3 matrix of float)
+0:35 'r61' (temp 2X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -202,8 +202,8 @@
0:? 5.000000
0:? 6.000000
0:36 Sequence
-0:36 move second child to first child (temp 2X3 matrix of float)
-0:36 'r62' (temp 2X3 matrix of float)
+0:36 move second child to first child (temp 3X2 matrix of float)
+0:36 'r62' (temp 3X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -212,8 +212,8 @@
0:? 5.000000
0:? 6.000000
0:39 Sequence
-0:39 move second child to first child (temp 2X4 matrix of float)
-0:39 'r65' (temp 2X4 matrix of float)
+0:39 move second child to first child (temp 4X2 matrix of float)
+0:39 'r65' (temp 4X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -224,8 +224,8 @@
0:? 7.000000
0:? 8.000000
0:40 Sequence
-0:40 move second child to first child (temp 3X4 matrix of float)
-0:40 'r66' (temp 3X4 matrix of float)
+0:40 move second child to first child (temp 4X3 matrix of float)
+0:40 'r66' (temp 4X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -239,10 +239,14 @@
0:? 10.000000
0:? 11.000000
0:? 12.000000
-0:45 Branch: Return with expression
-0:45 Constant:
-0:45 0.000000
+0:45 Sequence
+0:45 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:45 Constant:
+0:45 0.000000
+0:45 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
Linked fragment stage:
@@ -251,7 +255,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:48 Function Definition: PixelShaderFunction( (global float)
+0:3 Function Definition: PixelShaderFunction( (global float)
0:3 Function Parameters:
0:? Sequence
0:4 Sequence
@@ -441,8 +445,8 @@
0:? 14.000000
0:? 15.000000
0:35 Sequence
-0:35 move second child to first child (temp 3X2 matrix of float)
-0:35 'r61' (temp 3X2 matrix of float)
+0:35 move second child to first child (temp 2X3 matrix of float)
+0:35 'r61' (temp 2X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -451,8 +455,8 @@
0:? 5.000000
0:? 6.000000
0:36 Sequence
-0:36 move second child to first child (temp 2X3 matrix of float)
-0:36 'r62' (temp 2X3 matrix of float)
+0:36 move second child to first child (temp 3X2 matrix of float)
+0:36 'r62' (temp 3X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -461,8 +465,8 @@
0:? 5.000000
0:? 6.000000
0:39 Sequence
-0:39 move second child to first child (temp 2X4 matrix of float)
-0:39 'r65' (temp 2X4 matrix of float)
+0:39 move second child to first child (temp 4X2 matrix of float)
+0:39 'r65' (temp 4X2 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -473,8 +477,8 @@
0:? 7.000000
0:? 8.000000
0:40 Sequence
-0:40 move second child to first child (temp 3X4 matrix of float)
-0:40 'r66' (temp 3X4 matrix of float)
+0:40 move second child to first child (temp 4X3 matrix of float)
+0:40 'r66' (temp 4X3 matrix of float)
0:? Constant:
0:? 1.000000
0:? 2.000000
@@ -488,22 +492,25 @@
0:? 10.000000
0:? 11.000000
0:? 12.000000
-0:45 Branch: Return with expression
-0:45 Constant:
-0:45 0.000000
+0:45 Sequence
+0:45 move second child to first child (temp float)
+0:? '@entryPointOutput' (layout(location=0 ) out float)
+0:45 Constant:
+0:45 0.000000
+0:45 Branch: Return
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 145
+// Id's are bound by 148
Capability Shader
Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction"
+ EntryPoint Fragment 4 "PixelShaderFunction" 146
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 9 "r00"
Name 15 "r01"
@@ -530,9 +537,11 @@
Name 105 "r50"
Name 122 "r51"
Name 125 "r61"
- Name 131 "r62"
+ Name 130 "r62"
Name 136 "r65"
Name 141 "r66"
+ Name 146 "@entryPointOutput"
+ Decorate 146(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -628,23 +637,26 @@
119: 6(float) Constant 1097859072
120: 7(fvec4) ConstantComposite 116 117 118 119
121: 103 ConstantComposite 107 110 115 120
- 123: TypeMatrix 46(fvec2) 3
+ 123: TypeMatrix 69(fvec3) 2
124: TypePointer Function 123
- 126: 46(fvec2) ConstantComposite 12 13
- 127: 46(fvec2) ConstantComposite 16 108
- 128: 123 ConstantComposite 49 126 127
- 129: TypeMatrix 69(fvec3) 2
- 130: TypePointer Function 129
- 132: 69(fvec3) ConstantComposite 13 16 108
- 133: 129 ConstantComposite 72 132
- 134: TypeMatrix 7(fvec4) 2
+ 126: 69(fvec3) ConstantComposite 13 16 108
+ 127: 123 ConstantComposite 72 126
+ 128: TypeMatrix 46(fvec2) 3
+ 129: TypePointer Function 128
+ 131: 46(fvec2) ConstantComposite 12 13
+ 132: 46(fvec2) ConstantComposite 16 108
+ 133: 128 ConstantComposite 49 131 132
+ 134: TypeMatrix 46(fvec2) 4
135: TypePointer Function 134
- 137: 7(fvec4) ConstantComposite 16 108 109 111
- 138: 134 ConstantComposite 14 137
- 139: TypeMatrix 7(fvec4) 3
+ 137: 46(fvec2) ConstantComposite 109 111
+ 138: 134 ConstantComposite 49 131 132 137
+ 139: TypeMatrix 69(fvec3) 4
140: TypePointer Function 139
- 142: 7(fvec4) ConstantComposite 112 113 114 116
- 143: 139 ConstantComposite 14 137 142
+ 142: 69(fvec3) ConstantComposite 109 111 112
+ 143: 69(fvec3) ConstantComposite 113 114 116
+ 144: 139 ConstantComposite 72 126 142 143
+ 145: TypePointer Output 6(float)
+146(@entryPointOutput): 145(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
@@ -672,7 +684,7 @@
105(r50): 104(ptr) Variable Function
122(r51): 104(ptr) Variable Function
125(r61): 124(ptr) Variable Function
- 131(r62): 130(ptr) Variable Function
+ 130(r62): 129(ptr) Variable Function
136(r65): 135(ptr) Variable Function
141(r66): 140(ptr) Variable Function
Store 9(r00) 14
@@ -699,9 +711,10 @@
Store 100(r44) 102
Store 105(r50) 121
Store 122(r51) 121
- Store 125(r61) 128
- Store 131(r62) 133
+ Store 125(r61) 127
+ Store 130(r62) 133
Store 136(r65) 138
- Store 141(r66) 143
- ReturnValue 106
+ Store 141(r66) 144
+ Store 146(@entryPointOutput) 106
+ Return
FunctionEnd
diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out
index ca0235a..0600873 100755
--- a/Test/baseResults/hlsl.typedef.frag.out
+++ b/Test/baseResults/hlsl.typedef.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
+0:4 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:4 'ii' (in int)
@@ -43,7 +43,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:12 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
+0:4 Function Definition: ShaderFunction(vf4;i1; (global 4-component vector of float)
0:4 Function Parameters:
0:4 'input' (in 4-component vector of float)
0:4 'ii' (in int)
@@ -86,7 +86,6 @@
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction"
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 14 "ShaderFunction(vf4;i1;"
Name 12 "input"
diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out
index c3fc10c..3715166 100755
--- a/Test/baseResults/hlsl.void.frag.out
+++ b/Test/baseResults/hlsl.void.frag.out
@@ -2,17 +2,19 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: foo1( (global void)
+0:1 Function Definition: foo1( (global void)
0:1 Function Parameters:
-0:4 Function Definition: foo2( (global void)
+0:2 Function Definition: foo2( (global void)
0:2 Function Parameters:
-0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:5 Function Definition: PixelShaderFunction(vf4; (global void)
0:5 Function Parameters:
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (global void)
0:7 Function Call: foo2( (global void)
+0:8 Branch: Return
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -21,33 +23,40 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:2 Function Definition: foo1( (global void)
+0:1 Function Definition: foo1( (global void)
0:1 Function Parameters:
-0:4 Function Definition: foo2( (global void)
+0:2 Function Definition: foo2( (global void)
0:2 Function Parameters:
-0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:5 Function Definition: PixelShaderFunction(vf4; (global void)
0:5 Function Parameters:
-0:5 'input' (in 4-component vector of float)
+0:5 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:6 Function Call: foo1( (global void)
0:7 Function Call: foo2( (global void)
+0:8 Branch: Return
0:? Linker Objects
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 12
+// Id's are bound by 17
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction"
+ EntryPoint Fragment 4 "PixelShaderFunction" 16
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 6 "foo1("
Name 8 "foo2("
+ Name 16 "input"
+ Decorate 16(input) Location 0
2: TypeVoid
3: TypeFunction 2
+ 13: TypeFloat 32
+ 14: TypeVector 13(float) 4
+ 15: TypePointer Input 14(fvec4)
+ 16(input): 15(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
10: 2 FunctionCall 6(foo1()
diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out
index aece52a..63e14dc 100755
--- a/Test/baseResults/hlsl.whileLoop.frag.out
+++ b/Test/baseResults/hlsl.whileLoop.frag.out
@@ -2,19 +2,22 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Loop with condition tested first
0:3 Loop Condition
0:3 Compare Not Equal (temp bool)
-0:3 'input' (in 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
0:3 Loop Body
0:? Sequence
-0:3 Branch: Return with expression
-0:3 'input' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Branch: Return
0:4 Loop with condition tested first
0:4 Loop Condition
0:4 Constant:
@@ -31,6 +34,8 @@
0:6 false (const bool)
0:6 No loop body
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
Linked fragment stage:
@@ -39,19 +44,22 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
+0:2 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:2 Function Parameters:
-0:2 'input' (in 4-component vector of float)
+0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:? Sequence
0:3 Loop with condition tested first
0:3 Loop Condition
0:3 Compare Not Equal (temp bool)
-0:3 'input' (in 4-component vector of float)
-0:3 'input' (in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
0:3 Loop Body
0:? Sequence
-0:3 Branch: Return with expression
-0:3 'input' (in 4-component vector of float)
+0:3 Sequence
+0:3 move second child to first child (temp 4-component vector of float)
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:3 'input' (layout(location=0 ) in 4-component vector of float)
+0:3 Branch: Return
0:4 Loop with condition tested first
0:4 Loop Condition
0:4 Constant:
@@ -68,19 +76,23 @@
0:6 false (const bool)
0:6 No loop body
0:? Linker Objects
+0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 39
+// Id's are bound by 41
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "PixelShaderFunction" 14
+ EntryPoint Fragment 4 "PixelShaderFunction" 14 22
ExecutionMode 4 OriginUpperLeft
- Source HLSL 450
Name 4 "PixelShaderFunction"
Name 14 "input"
+ Name 22 "@entryPointOutput"
+ Decorate 14(input) Location 0
+ Decorate 22(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
11: TypeFloat 32
@@ -89,7 +101,9 @@
14(input): 13(ptr) Variable Input
17: TypeBool
18: TypeVector 17(bool) 4
- 28: 17(bool) ConstantFalse
+ 21: TypePointer Output 12(fvec4)
+22(@entryPointOutput): 21(ptr) Variable Output
+ 30: 17(bool) ConstantFalse
4(PixelShaderFunction): 2 Function None 3
5: Label
Branch 6
@@ -103,43 +117,44 @@
20: 17(bool) Any 19
BranchConditional 20 7 8
7: Label
- 21: 12(fvec4) Load 14(input)
- ReturnValue 21
+ 23: 12(fvec4) Load 14(input)
+ Store 22(@entryPointOutput) 23
+ Return
9: Label
Branch 6
8: Label
- Branch 23
- 23: Label
- LoopMerge 25 26 None
- Branch 27
- 27: Label
- BranchConditional 28 24 25
- 24: Label
- Branch 26
- 26: Label
- Branch 23
+ Branch 25
25: Label
+ LoopMerge 27 28 None
Branch 29
29: Label
- LoopMerge 31 32 None
- Branch 33
- 33: Label
- BranchConditional 28 30 31
- 30: Label
- Branch 32
- 32: Label
- Branch 29
+ BranchConditional 30 26 27
+ 26: Label
+ Branch 28
+ 28: Label
+ Branch 25
+ 27: Label
+ Branch 31
31: Label
- Branch 34
- 34: Label
- LoopMerge 36 37 None
- Branch 38
- 38: Label
- BranchConditional 28 35 36
- 35: Label
- Branch 37
- 37: Label
+ LoopMerge 33 34 None
+ Branch 35
+ 35: Label
+ BranchConditional 30 32 33
+ 32: Label
Branch 34
+ 34: Label
+ Branch 31
+ 33: Label
+ Branch 36
36: Label
+ LoopMerge 38 39 None
+ Branch 40
+ 40: Label
+ BranchConditional 30 37 38
+ 37: Label
+ Branch 39
+ 39: Label
+ Branch 36
+ 38: Label
Return
FunctionEnd
diff --git a/Test/baseResults/mains1.frag.out b/Test/baseResults/mains1.frag.out
index 8ba02bf..0b5c2b7 100644
--- a/Test/baseResults/mains1.frag.out
+++ b/Test/baseResults/mains1.frag.out
@@ -42,7 +42,7 @@
Linked geometry stage:
ERROR: Linking geometry stage: Contradictory output layout primitives
-ERROR: Linking geometry stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking geometry stage: Missing entry point: Each stage requires one entry point
ERROR: Linking geometry stage: At least one shader must specify an input layout primitive
ERROR: Linking geometry stage: At least one shader must specify a layout(max_vertices = value)
diff --git a/Test/baseResults/noMain.vert.out b/Test/baseResults/noMain.vert.out
index 630af95..80a3225 100644
--- a/Test/baseResults/noMain.vert.out
+++ b/Test/baseResults/noMain.vert.out
@@ -23,7 +23,7 @@
Linked vertex stage:
-ERROR: Linking vertex stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point
Linked fragment stage:
diff --git a/Test/baseResults/nonVulkan.frag.out b/Test/baseResults/nonVulkan.frag.out
index 10c693c..8e03610 100644
--- a/Test/baseResults/nonVulkan.frag.out
+++ b/Test/baseResults/nonVulkan.frag.out
@@ -18,7 +18,7 @@
Linked fragment stage:
-ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point
Shader version: 450
ERROR: node is still EOpNull!
diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out
new file mode 100644
index 0000000..0f367c9
--- /dev/null
+++ b/Test/baseResults/remap.basic.dcefunc.frag.out
@@ -0,0 +1,40 @@
+remap.basic.dcefunc.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 19
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 14 16
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "dead_fn("
+ Name 14 "outf4"
+ Name 16 "inf"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypeFunction 7(fvec3)
+ 10: 6(float) Constant 0
+ 11: 7(fvec3) ConstantComposite 10 10 10
+ 12: TypeVector 6(float) 4
+ 13: TypePointer Output 12(fvec4)
+ 14(outf4): 13(ptr) Variable Output
+ 15: TypePointer Input 6(float)
+ 16(inf): 15(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 17: 6(float) Load 16(inf)
+ 18: 12(fvec4) CompositeConstruct 17 17 17 17
+ Store 14(outf4) 18
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.basic.dcevartype.frag.out b/Test/baseResults/remap.basic.dcevartype.frag.out
new file mode 100644
index 0000000..dd03946
--- /dev/null
+++ b/Test/baseResults/remap.basic.dcevartype.frag.out
@@ -0,0 +1,12 @@
+remap.basic.dcevartype.frag
+ERROR: #version: ES shaders for Vulkan SPIR-V require version 310 or higher
+Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
+ERROR: 1 compilation errors. No code generated.
+
+
+
+Linked fragment stage:
+
+ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out
new file mode 100644
index 0000000..f6d6ed4
--- /dev/null
+++ b/Test/baseResults/remap.basic.everything.frag.out
@@ -0,0 +1,31 @@
+remap.basic.everything.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24969
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 4539 3773
+ ExecutionMode 5663 OriginUpperLeft
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 13: TypeFloat 32
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Output 29(fvec4)
+ 4539: 666(ptr) Variable Output
+ 650: TypePointer Input 13(float)
+ 3773: 650(ptr) Variable Input
+ 5663: 8 Function None 1282
+ 24968: Label
+ 17486: 13(float) Load 3773
+ 17691: 29(fvec4) CompositeConstruct 17486 17486 17486 17486
+ Store 4539 17691
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out
new file mode 100644
index 0000000..3632309
--- /dev/null
+++ b/Test/baseResults/remap.basic.none.frag.out
@@ -0,0 +1,44 @@
+remap.basic.none.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 15 17
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "dead_fn("
+ Name 15 "outf4"
+ Name 17 "inf"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypeFunction 7(fvec3)
+ 11: 6(float) Constant 0
+ 12: 7(fvec3) ConstantComposite 11 11 11
+ 13: TypeVector 6(float) 4
+ 14: TypePointer Output 13(fvec4)
+ 15(outf4): 14(ptr) Variable Output
+ 16: TypePointer Input 6(float)
+ 17(inf): 16(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 18: 6(float) Load 17(inf)
+ 19: 13(fvec4) CompositeConstruct 18 18 18 18
+ Store 15(outf4) 19
+ Return
+ FunctionEnd
+ 9(dead_fn(): 7(fvec3) Function None 8
+ 10: Label
+ ReturnValue 12
+ FunctionEnd
diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out
new file mode 100644
index 0000000..d34ce8f
--- /dev/null
+++ b/Test/baseResults/remap.basic.strip.frag.out
@@ -0,0 +1,39 @@
+remap.basic.strip.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 20
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 15 17
+ ExecutionMode 4 OriginUpperLeft
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypeFunction 7(fvec3)
+ 11: 6(float) Constant 0
+ 12: 7(fvec3) ConstantComposite 11 11 11
+ 13: TypeVector 6(float) 4
+ 14: TypePointer Output 13(fvec4)
+ 15: 14(ptr) Variable Output
+ 16: TypePointer Input 6(float)
+ 17: 16(ptr) Variable Input
+ 4: 2 Function None 3
+ 5: Label
+ 18: 6(float) Load 17
+ 19: 13(fvec4) CompositeConstruct 18 18 18 18
+ Store 15 19
+ Return
+ FunctionEnd
+ 9: 7(fvec3) Function None 8
+ 10: Label
+ ReturnValue 12
+ FunctionEnd
diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
new file mode 100644
index 0000000..bd1fa7e
--- /dev/null
+++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
@@ -0,0 +1,223 @@
+remap.hlsl.sample.basic.everything.frag
+WARNING: 0:4: 'immediate sampler state' : unimplemented
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24916
+
+ Capability Shader
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 4656 4112
+ ExecutionMode 5663 OriginUpperLeft
+ Decorate 4727 DescriptorSet 0
+ Decorate 4727 Binding 0
+ Decorate 3305 DescriptorSet 0
+ Decorate 3305 Binding 0
+ Decorate 4743 DescriptorSet 0
+ Decorate 4807 DescriptorSet 0
+ Decorate 5042 DescriptorSet 0
+ Decorate 5058 DescriptorSet 0
+ Decorate 5122 DescriptorSet 0
+ Decorate 3967 DescriptorSet 0
+ Decorate 3983 DescriptorSet 0
+ Decorate 4047 DescriptorSet 0
+ Decorate 3789 DescriptorSet 0
+ Decorate 3805 DescriptorSet 0
+ Decorate 3869 DescriptorSet 0
+ Decorate 4656 Location 0
+ Decorate 4112 BuiltIn FragDepth
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 12: TypeInt 32 1
+ 1335: TypeStruct 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int) 12(int)
+ 1972: TypePointer Function 1335(struct)
+ 2574: 12(int) Constant 1
+ 649: TypePointer Function 12(int)
+ 2577: 12(int) Constant 2
+ 2580: 12(int) Constant 3
+ 2583: 12(int) Constant 4
+ 2586: 12(int) Constant 5
+ 2589: 12(int) Constant 6
+ 2571: 12(int) Constant 0
+ 2592: 12(int) Constant 7
+ 2595: 12(int) Constant 8
+ 2598: 12(int) Constant 9
+ 2601: 12(int) Constant 10
+ 2604: 12(int) Constant 11
+ 13: TypeFloat 32
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Function 29(fvec4)
+ 149: TypeImage 13(float) 1D sampled format:Unknown
+ 786: TypePointer UniformConstant 149
+ 4727: 786(ptr) Variable UniformConstant
+ 508: TypeSampler
+ 1145: TypePointer UniformConstant 508
+ 3305: 1145(ptr) Variable UniformConstant
+ 510: TypeSampledImage 149
+ 2935: 13(float) Constant 1036831949
+ 26: TypeVector 12(int) 4
+ 148: TypeImage 12(int) 1D sampled format:Unknown
+ 785: TypePointer UniformConstant 148
+ 4743: 785(ptr) Variable UniformConstant
+ 511: TypeSampledImage 148
+ 2821: 13(float) Constant 1045220557
+ 11: TypeInt 32 0
+ 23: TypeVector 11(int) 4
+ 147: TypeImage 11(int) 1D sampled format:Unknown
+ 784: TypePointer UniformConstant 147
+ 4807: 784(ptr) Variable UniformConstant
+ 512: TypeSampledImage 147
+ 2151: 13(float) Constant 1050253722
+ 150: TypeImage 13(float) 2D sampled format:Unknown
+ 787: TypePointer UniformConstant 150
+ 5042: 787(ptr) Variable UniformConstant
+ 513: TypeSampledImage 150
+ 19: TypeVector 13(float) 2
+ 1825: 19(fvec2) ConstantComposite 2935 2821
+ 151: TypeImage 12(int) 2D sampled format:Unknown
+ 788: TypePointer UniformConstant 151
+ 5058: 788(ptr) Variable UniformConstant
+ 514: TypeSampledImage 151
+ 2707: 13(float) Constant 1053609165
+ 2028: 19(fvec2) ConstantComposite 2151 2707
+ 152: TypeImage 11(int) 2D sampled format:Unknown
+ 789: TypePointer UniformConstant 152
+ 5122: 789(ptr) Variable UniformConstant
+ 515: TypeSampledImage 152
+ 252: 13(float) Constant 1056964608
+ 2037: 13(float) Constant 1058642330
+ 2684: 19(fvec2) ConstantComposite 252 2037
+ 153: TypeImage 13(float) 3D sampled format:Unknown
+ 790: TypePointer UniformConstant 153
+ 3967: 790(ptr) Variable UniformConstant
+ 516: TypeSampledImage 153
+ 24: TypeVector 13(float) 3
+ 1660: 24(fvec3) ConstantComposite 2935 2821 2151
+ 154: TypeImage 12(int) 3D sampled format:Unknown
+ 791: TypePointer UniformConstant 154
+ 3983: 791(ptr) Variable UniformConstant
+ 517: TypeSampledImage 154
+ 2174: 24(fvec3) ConstantComposite 2707 252 2037
+ 155: TypeImage 11(int) 3D sampled format:Unknown
+ 792: TypePointer UniformConstant 155
+ 4047: 792(ptr) Variable UniformConstant
+ 518: TypeSampledImage 155
+ 808: 13(float) Constant 1060320051
+ 2593: 13(float) Constant 1061997773
+ 1364: 13(float) Constant 1063675494
+ 2476: 24(fvec3) ConstantComposite 808 2593 1364
+ 156: TypeImage 13(float) Cube sampled format:Unknown
+ 793: TypePointer UniformConstant 156
+ 3789: 793(ptr) Variable UniformConstant
+ 519: TypeSampledImage 156
+ 157: TypeImage 12(int) Cube sampled format:Unknown
+ 794: TypePointer UniformConstant 157
+ 3805: 794(ptr) Variable UniformConstant
+ 520: TypeSampledImage 157
+ 158: TypeImage 11(int) Cube sampled format:Unknown
+ 795: TypePointer UniformConstant 158
+ 3869: 795(ptr) Variable UniformConstant
+ 521: TypeSampledImage 158
+ 1032: TypeStruct 29(fvec4) 13(float)
+ 1669: TypePointer Function 1032(struct)
+ 138: 13(float) Constant 1065353216
+ 1284: 29(fvec4) ConstantComposite 138 138 138 138
+ 650: TypePointer Function 13(float)
+ 667: TypePointer Output 29(fvec4)
+ 4656: 667(ptr) Variable Output
+ 651: TypePointer Output 13(float)
+ 4112: 651(ptr) Variable Output
+ 5663: 8 Function None 1282
+ 24915: Label
+ 5830: 1972(ptr) Variable Function
+ 5072: 1669(ptr) Variable Function
+ 22097: 649(ptr) AccessChain 5830 2574
+ Store 22097 2574
+ 19732: 649(ptr) AccessChain 5830 2577
+ Store 19732 2574
+ 19733: 649(ptr) AccessChain 5830 2580
+ Store 19733 2574
+ 19734: 649(ptr) AccessChain 5830 2583
+ Store 19734 2574
+ 19735: 649(ptr) AccessChain 5830 2586
+ Store 19735 2574
+ 19736: 649(ptr) AccessChain 5830 2589
+ Store 19736 2574
+ 19737: 649(ptr) AccessChain 5830 2571
+ Store 19737 2574
+ 19738: 649(ptr) AccessChain 5830 2592
+ Store 19738 2574
+ 19739: 649(ptr) AccessChain 5830 2595
+ Store 19739 2574
+ 19740: 649(ptr) AccessChain 5830 2598
+ Store 19740 2574
+ 19741: 649(ptr) AccessChain 5830 2601
+ Store 19741 2574
+ 19656: 649(ptr) AccessChain 5830 2604
+ Store 19656 2574
+ 14934: 149 Load 4727
+ 11686: 508 Load 3305
+ 11940: 510 SampledImage 14934 11686
+ 7877: 29(fvec4) ImageSampleImplicitLod 11940 2935
+ 15360: 148 Load 4743
+ 15706: 508 Load 3305
+ 11941: 511 SampledImage 15360 15706
+ 7878: 26(ivec4) ImageSampleImplicitLod 11941 2821
+ 15361: 147 Load 4807
+ 15707: 508 Load 3305
+ 11942: 512 SampledImage 15361 15707
+ 7879: 23(ivec4) ImageSampleImplicitLod 11942 2151
+ 15362: 150 Load 5042
+ 15708: 508 Load 3305
+ 11943: 513 SampledImage 15362 15708
+ 7880: 29(fvec4) ImageSampleImplicitLod 11943 1825
+ 15363: 151 Load 5058
+ 15709: 508 Load 3305
+ 11944: 514 SampledImage 15363 15709
+ 7881: 26(ivec4) ImageSampleImplicitLod 11944 2028
+ 15364: 152 Load 5122
+ 15710: 508 Load 3305
+ 11945: 515 SampledImage 15364 15710
+ 7882: 23(ivec4) ImageSampleImplicitLod 11945 2684
+ 15365: 153 Load 3967
+ 15711: 508 Load 3305
+ 11946: 516 SampledImage 15365 15711
+ 7883: 29(fvec4) ImageSampleImplicitLod 11946 1660
+ 15366: 154 Load 3983
+ 15712: 508 Load 3305
+ 11947: 517 SampledImage 15366 15712
+ 7884: 26(ivec4) ImageSampleImplicitLod 11947 2174
+ 15367: 155 Load 4047
+ 15713: 508 Load 3305
+ 11948: 518 SampledImage 15367 15713
+ 7885: 23(ivec4) ImageSampleImplicitLod 11948 2476
+ 15368: 156 Load 3789
+ 15714: 508 Load 3305
+ 11949: 519 SampledImage 15368 15714
+ 7886: 29(fvec4) ImageSampleImplicitLod 11949 1660
+ 15369: 157 Load 3805
+ 15715: 508 Load 3305
+ 11950: 520 SampledImage 15369 15715
+ 7887: 26(ivec4) ImageSampleImplicitLod 11950 2174
+ 15370: 158 Load 3869
+ 15716: 508 Load 3305
+ 12016: 521 SampledImage 15370 15716
+ 7204: 23(ivec4) ImageSampleImplicitLod 12016 2476
+ 20158: 666(ptr) AccessChain 5072 2571
+ Store 20158 1284
+ 19742: 650(ptr) AccessChain 5072 2574
+ Store 19742 138
+ 19848: 666(ptr) AccessChain 5072 2571
+ 7967: 29(fvec4) Load 19848
+ Store 4656 7967
+ 16622: 650(ptr) AccessChain 5072 2574
+ 11539: 13(float) Load 16622
+ Store 4112 11539
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
new file mode 100644
index 0000000..b149718
--- /dev/null
+++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
@@ -0,0 +1,305 @@
+remap.hlsl.sample.basic.none.frag
+WARNING: 0:4: 'immediate sampler state' : unimplemented
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 190
+
+ Capability Shader
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 180 184
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 7 "MemberTest"
+ MemberName 7(MemberTest) 0 "Sample"
+ MemberName 7(MemberTest) 1 "CalculateLevelOfDetail"
+ MemberName 7(MemberTest) 2 "CalculateLevelOfDetailUnclamped"
+ MemberName 7(MemberTest) 3 "Gather"
+ MemberName 7(MemberTest) 4 "GetDimensions"
+ MemberName 7(MemberTest) 5 "GetSamplePosition"
+ MemberName 7(MemberTest) 6 "Load"
+ MemberName 7(MemberTest) 7 "SampleBias"
+ MemberName 7(MemberTest) 8 "SampleCmp"
+ MemberName 7(MemberTest) 9 "SampleCmpLevelZero"
+ MemberName 7(MemberTest) 10 "SampleGrad"
+ MemberName 7(MemberTest) 11 "SampleLevel"
+ Name 9 "mtest"
+ Name 38 "txval10"
+ Name 41 "g_tTex1df4"
+ Name 45 "g_sSamp"
+ Name 53 "txval11"
+ Name 56 "g_tTex1di4"
+ Name 66 "txval12"
+ Name 69 "g_tTex1du4"
+ Name 76 "txval20"
+ Name 79 "g_tTex2df4"
+ Name 87 "txval21"
+ Name 90 "g_tTex2di4"
+ Name 98 "txval22"
+ Name 101 "g_tTex2du4"
+ Name 110 "txval30"
+ Name 113 "g_tTex3df4"
+ Name 121 "txval31"
+ Name 124 "g_tTex3di4"
+ Name 131 "txval32"
+ Name 134 "g_tTex3du4"
+ Name 144 "txval40"
+ Name 147 "g_tTexcdf4"
+ Name 153 "txval41"
+ Name 156 "g_tTexcdi4"
+ Name 162 "txval42"
+ Name 165 "g_tTexcdu4"
+ Name 171 "PS_OUTPUT"
+ MemberName 171(PS_OUTPUT) 0 "Color"
+ MemberName 171(PS_OUTPUT) 1 "Depth"
+ Name 173 "psout"
+ Name 180 "Color"
+ Name 184 "Depth"
+ Name 187 "g_sSamp2d"
+ Name 188 "g_sSamp2D_b"
+ Name 189 "g_tTex1df4a"
+ Decorate 41(g_tTex1df4) DescriptorSet 0
+ Decorate 41(g_tTex1df4) Binding 0
+ Decorate 45(g_sSamp) DescriptorSet 0
+ Decorate 45(g_sSamp) Binding 0
+ Decorate 56(g_tTex1di4) DescriptorSet 0
+ Decorate 69(g_tTex1du4) DescriptorSet 0
+ Decorate 79(g_tTex2df4) DescriptorSet 0
+ Decorate 90(g_tTex2di4) DescriptorSet 0
+ Decorate 101(g_tTex2du4) DescriptorSet 0
+ Decorate 113(g_tTex3df4) DescriptorSet 0
+ Decorate 124(g_tTex3di4) DescriptorSet 0
+ Decorate 134(g_tTex3du4) DescriptorSet 0
+ Decorate 147(g_tTexcdf4) DescriptorSet 0
+ Decorate 156(g_tTexcdi4) DescriptorSet 0
+ Decorate 165(g_tTexcdu4) DescriptorSet 0
+ Decorate 180(Color) Location 0
+ Decorate 184(Depth) BuiltIn FragDepth
+ Decorate 187(g_sSamp2d) DescriptorSet 0
+ Decorate 188(g_sSamp2D_b) DescriptorSet 0
+ Decorate 189(g_tTex1df4a) DescriptorSet 0
+ Decorate 189(g_tTex1df4a) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7(MemberTest): TypeStruct 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int)
+ 8: TypePointer Function 7(MemberTest)
+ 10: 6(int) Constant 1
+ 11: TypePointer Function 6(int)
+ 13: 6(int) Constant 2
+ 15: 6(int) Constant 3
+ 17: 6(int) Constant 4
+ 19: 6(int) Constant 5
+ 21: 6(int) Constant 6
+ 23: 6(int) Constant 0
+ 25: 6(int) Constant 7
+ 27: 6(int) Constant 8
+ 29: 6(int) Constant 9
+ 31: 6(int) Constant 10
+ 33: 6(int) Constant 11
+ 35: TypeFloat 32
+ 36: TypeVector 35(float) 4
+ 37: TypePointer Function 36(fvec4)
+ 39: TypeImage 35(float) 1D sampled format:Unknown
+ 40: TypePointer UniformConstant 39
+ 41(g_tTex1df4): 40(ptr) Variable UniformConstant
+ 43: TypeSampler
+ 44: TypePointer UniformConstant 43
+ 45(g_sSamp): 44(ptr) Variable UniformConstant
+ 47: TypeSampledImage 39
+ 49: 35(float) Constant 1036831949
+ 51: TypeVector 6(int) 4
+ 52: TypePointer Function 51(ivec4)
+ 54: TypeImage 6(int) 1D sampled format:Unknown
+ 55: TypePointer UniformConstant 54
+ 56(g_tTex1di4): 55(ptr) Variable UniformConstant
+ 59: TypeSampledImage 54
+ 61: 35(float) Constant 1045220557
+ 63: TypeInt 32 0
+ 64: TypeVector 63(int) 4
+ 65: TypePointer Function 64(ivec4)
+ 67: TypeImage 63(int) 1D sampled format:Unknown
+ 68: TypePointer UniformConstant 67
+ 69(g_tTex1du4): 68(ptr) Variable UniformConstant
+ 72: TypeSampledImage 67
+ 74: 35(float) Constant 1050253722
+ 77: TypeImage 35(float) 2D sampled format:Unknown
+ 78: TypePointer UniformConstant 77
+ 79(g_tTex2df4): 78(ptr) Variable UniformConstant
+ 82: TypeSampledImage 77
+ 84: TypeVector 35(float) 2
+ 85: 84(fvec2) ConstantComposite 49 61
+ 88: TypeImage 6(int) 2D sampled format:Unknown
+ 89: TypePointer UniformConstant 88
+ 90(g_tTex2di4): 89(ptr) Variable UniformConstant
+ 93: TypeSampledImage 88
+ 95: 35(float) Constant 1053609165
+ 96: 84(fvec2) ConstantComposite 74 95
+ 99: TypeImage 63(int) 2D sampled format:Unknown
+ 100: TypePointer UniformConstant 99
+ 101(g_tTex2du4): 100(ptr) Variable UniformConstant
+ 104: TypeSampledImage 99
+ 106: 35(float) Constant 1056964608
+ 107: 35(float) Constant 1058642330
+ 108: 84(fvec2) ConstantComposite 106 107
+ 111: TypeImage 35(float) 3D sampled format:Unknown
+ 112: TypePointer UniformConstant 111
+ 113(g_tTex3df4): 112(ptr) Variable UniformConstant
+ 116: TypeSampledImage 111
+ 118: TypeVector 35(float) 3
+ 119: 118(fvec3) ConstantComposite 49 61 74
+ 122: TypeImage 6(int) 3D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124(g_tTex3di4): 123(ptr) Variable UniformConstant
+ 127: TypeSampledImage 122
+ 129: 118(fvec3) ConstantComposite 95 106 107
+ 132: TypeImage 63(int) 3D sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+ 134(g_tTex3du4): 133(ptr) Variable UniformConstant
+ 137: TypeSampledImage 132
+ 139: 35(float) Constant 1060320051
+ 140: 35(float) Constant 1061997773
+ 141: 35(float) Constant 1063675494
+ 142: 118(fvec3) ConstantComposite 139 140 141
+ 145: TypeImage 35(float) Cube sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+ 147(g_tTexcdf4): 146(ptr) Variable UniformConstant
+ 150: TypeSampledImage 145
+ 154: TypeImage 6(int) Cube sampled format:Unknown
+ 155: TypePointer UniformConstant 154
+ 156(g_tTexcdi4): 155(ptr) Variable UniformConstant
+ 159: TypeSampledImage 154
+ 163: TypeImage 63(int) Cube sampled format:Unknown
+ 164: TypePointer UniformConstant 163
+ 165(g_tTexcdu4): 164(ptr) Variable UniformConstant
+ 168: TypeSampledImage 163
+ 171(PS_OUTPUT): TypeStruct 36(fvec4) 35(float)
+ 172: TypePointer Function 171(PS_OUTPUT)
+ 174: 35(float) Constant 1065353216
+ 175: 36(fvec4) ConstantComposite 174 174 174 174
+ 177: TypePointer Function 35(float)
+ 179: TypePointer Output 36(fvec4)
+ 180(Color): 179(ptr) Variable Output
+ 183: TypePointer Output 35(float)
+ 184(Depth): 183(ptr) Variable Output
+ 187(g_sSamp2d): 44(ptr) Variable UniformConstant
+188(g_sSamp2D_b): 44(ptr) Variable UniformConstant
+189(g_tTex1df4a): 40(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(mtest): 8(ptr) Variable Function
+ 38(txval10): 37(ptr) Variable Function
+ 53(txval11): 52(ptr) Variable Function
+ 66(txval12): 65(ptr) Variable Function
+ 76(txval20): 37(ptr) Variable Function
+ 87(txval21): 52(ptr) Variable Function
+ 98(txval22): 65(ptr) Variable Function
+ 110(txval30): 37(ptr) Variable Function
+ 121(txval31): 52(ptr) Variable Function
+ 131(txval32): 65(ptr) Variable Function
+ 144(txval40): 37(ptr) Variable Function
+ 153(txval41): 52(ptr) Variable Function
+ 162(txval42): 65(ptr) Variable Function
+ 173(psout): 172(ptr) Variable Function
+ 12: 11(ptr) AccessChain 9(mtest) 10
+ Store 12 10
+ 14: 11(ptr) AccessChain 9(mtest) 13
+ Store 14 10
+ 16: 11(ptr) AccessChain 9(mtest) 15
+ Store 16 10
+ 18: 11(ptr) AccessChain 9(mtest) 17
+ Store 18 10
+ 20: 11(ptr) AccessChain 9(mtest) 19
+ Store 20 10
+ 22: 11(ptr) AccessChain 9(mtest) 21
+ Store 22 10
+ 24: 11(ptr) AccessChain 9(mtest) 23
+ Store 24 10
+ 26: 11(ptr) AccessChain 9(mtest) 25
+ Store 26 10
+ 28: 11(ptr) AccessChain 9(mtest) 27
+ Store 28 10
+ 30: 11(ptr) AccessChain 9(mtest) 29
+ Store 30 10
+ 32: 11(ptr) AccessChain 9(mtest) 31
+ Store 32 10
+ 34: 11(ptr) AccessChain 9(mtest) 33
+ Store 34 10
+ 42: 39 Load 41(g_tTex1df4)
+ 46: 43 Load 45(g_sSamp)
+ 48: 47 SampledImage 42 46
+ 50: 36(fvec4) ImageSampleImplicitLod 48 49
+ Store 38(txval10) 50
+ 57: 54 Load 56(g_tTex1di4)
+ 58: 43 Load 45(g_sSamp)
+ 60: 59 SampledImage 57 58
+ 62: 51(ivec4) ImageSampleImplicitLod 60 61
+ Store 53(txval11) 62
+ 70: 67 Load 69(g_tTex1du4)
+ 71: 43 Load 45(g_sSamp)
+ 73: 72 SampledImage 70 71
+ 75: 64(ivec4) ImageSampleImplicitLod 73 74
+ Store 66(txval12) 75
+ 80: 77 Load 79(g_tTex2df4)
+ 81: 43 Load 45(g_sSamp)
+ 83: 82 SampledImage 80 81
+ 86: 36(fvec4) ImageSampleImplicitLod 83 85
+ Store 76(txval20) 86
+ 91: 88 Load 90(g_tTex2di4)
+ 92: 43 Load 45(g_sSamp)
+ 94: 93 SampledImage 91 92
+ 97: 51(ivec4) ImageSampleImplicitLod 94 96
+ Store 87(txval21) 97
+ 102: 99 Load 101(g_tTex2du4)
+ 103: 43 Load 45(g_sSamp)
+ 105: 104 SampledImage 102 103
+ 109: 64(ivec4) ImageSampleImplicitLod 105 108
+ Store 98(txval22) 109
+ 114: 111 Load 113(g_tTex3df4)
+ 115: 43 Load 45(g_sSamp)
+ 117: 116 SampledImage 114 115
+ 120: 36(fvec4) ImageSampleImplicitLod 117 119
+ Store 110(txval30) 120
+ 125: 122 Load 124(g_tTex3di4)
+ 126: 43 Load 45(g_sSamp)
+ 128: 127 SampledImage 125 126
+ 130: 51(ivec4) ImageSampleImplicitLod 128 129
+ Store 121(txval31) 130
+ 135: 132 Load 134(g_tTex3du4)
+ 136: 43 Load 45(g_sSamp)
+ 138: 137 SampledImage 135 136
+ 143: 64(ivec4) ImageSampleImplicitLod 138 142
+ Store 131(txval32) 143
+ 148: 145 Load 147(g_tTexcdf4)
+ 149: 43 Load 45(g_sSamp)
+ 151: 150 SampledImage 148 149
+ 152: 36(fvec4) ImageSampleImplicitLod 151 119
+ Store 144(txval40) 152
+ 157: 154 Load 156(g_tTexcdi4)
+ 158: 43 Load 45(g_sSamp)
+ 160: 159 SampledImage 157 158
+ 161: 51(ivec4) ImageSampleImplicitLod 160 129
+ Store 153(txval41) 161
+ 166: 163 Load 165(g_tTexcdu4)
+ 167: 43 Load 45(g_sSamp)
+ 169: 168 SampledImage 166 167
+ 170: 64(ivec4) ImageSampleImplicitLod 169 142
+ Store 162(txval42) 170
+ 176: 37(ptr) AccessChain 173(psout) 23
+ Store 176 175
+ 178: 177(ptr) AccessChain 173(psout) 10
+ Store 178 174
+ 181: 37(ptr) AccessChain 173(psout) 23
+ 182: 36(fvec4) Load 181
+ Store 180(Color) 182
+ 185: 177(ptr) AccessChain 173(psout) 10
+ 186: 35(float) Load 185
+ Store 184(Depth) 186
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
new file mode 100644
index 0000000..5340767
--- /dev/null
+++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
@@ -0,0 +1,256 @@
+remap.hlsl.sample.basic.strip.frag
+WARNING: 0:4: 'immediate sampler state' : unimplemented
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 190
+
+ Capability Shader
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 180 184
+ ExecutionMode 4 OriginUpperLeft
+ Decorate 41 DescriptorSet 0
+ Decorate 41 Binding 0
+ Decorate 45 DescriptorSet 0
+ Decorate 45 Binding 0
+ Decorate 56 DescriptorSet 0
+ Decorate 69 DescriptorSet 0
+ Decorate 79 DescriptorSet 0
+ Decorate 90 DescriptorSet 0
+ Decorate 101 DescriptorSet 0
+ Decorate 113 DescriptorSet 0
+ Decorate 124 DescriptorSet 0
+ Decorate 134 DescriptorSet 0
+ Decorate 147 DescriptorSet 0
+ Decorate 156 DescriptorSet 0
+ Decorate 165 DescriptorSet 0
+ Decorate 180 Location 0
+ Decorate 184 BuiltIn FragDepth
+ Decorate 187 DescriptorSet 0
+ Decorate 188 DescriptorSet 0
+ Decorate 189 DescriptorSet 0
+ Decorate 189 Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeStruct 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int) 6(int)
+ 8: TypePointer Function 7(struct)
+ 10: 6(int) Constant 1
+ 11: TypePointer Function 6(int)
+ 13: 6(int) Constant 2
+ 15: 6(int) Constant 3
+ 17: 6(int) Constant 4
+ 19: 6(int) Constant 5
+ 21: 6(int) Constant 6
+ 23: 6(int) Constant 0
+ 25: 6(int) Constant 7
+ 27: 6(int) Constant 8
+ 29: 6(int) Constant 9
+ 31: 6(int) Constant 10
+ 33: 6(int) Constant 11
+ 35: TypeFloat 32
+ 36: TypeVector 35(float) 4
+ 37: TypePointer Function 36(fvec4)
+ 39: TypeImage 35(float) 1D sampled format:Unknown
+ 40: TypePointer UniformConstant 39
+ 41: 40(ptr) Variable UniformConstant
+ 43: TypeSampler
+ 44: TypePointer UniformConstant 43
+ 45: 44(ptr) Variable UniformConstant
+ 47: TypeSampledImage 39
+ 49: 35(float) Constant 1036831949
+ 51: TypeVector 6(int) 4
+ 52: TypePointer Function 51(ivec4)
+ 54: TypeImage 6(int) 1D sampled format:Unknown
+ 55: TypePointer UniformConstant 54
+ 56: 55(ptr) Variable UniformConstant
+ 59: TypeSampledImage 54
+ 61: 35(float) Constant 1045220557
+ 63: TypeInt 32 0
+ 64: TypeVector 63(int) 4
+ 65: TypePointer Function 64(ivec4)
+ 67: TypeImage 63(int) 1D sampled format:Unknown
+ 68: TypePointer UniformConstant 67
+ 69: 68(ptr) Variable UniformConstant
+ 72: TypeSampledImage 67
+ 74: 35(float) Constant 1050253722
+ 77: TypeImage 35(float) 2D sampled format:Unknown
+ 78: TypePointer UniformConstant 77
+ 79: 78(ptr) Variable UniformConstant
+ 82: TypeSampledImage 77
+ 84: TypeVector 35(float) 2
+ 85: 84(fvec2) ConstantComposite 49 61
+ 88: TypeImage 6(int) 2D sampled format:Unknown
+ 89: TypePointer UniformConstant 88
+ 90: 89(ptr) Variable UniformConstant
+ 93: TypeSampledImage 88
+ 95: 35(float) Constant 1053609165
+ 96: 84(fvec2) ConstantComposite 74 95
+ 99: TypeImage 63(int) 2D sampled format:Unknown
+ 100: TypePointer UniformConstant 99
+ 101: 100(ptr) Variable UniformConstant
+ 104: TypeSampledImage 99
+ 106: 35(float) Constant 1056964608
+ 107: 35(float) Constant 1058642330
+ 108: 84(fvec2) ConstantComposite 106 107
+ 111: TypeImage 35(float) 3D sampled format:Unknown
+ 112: TypePointer UniformConstant 111
+ 113: 112(ptr) Variable UniformConstant
+ 116: TypeSampledImage 111
+ 118: TypeVector 35(float) 3
+ 119: 118(fvec3) ConstantComposite 49 61 74
+ 122: TypeImage 6(int) 3D sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+ 124: 123(ptr) Variable UniformConstant
+ 127: TypeSampledImage 122
+ 129: 118(fvec3) ConstantComposite 95 106 107
+ 132: TypeImage 63(int) 3D sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+ 134: 133(ptr) Variable UniformConstant
+ 137: TypeSampledImage 132
+ 139: 35(float) Constant 1060320051
+ 140: 35(float) Constant 1061997773
+ 141: 35(float) Constant 1063675494
+ 142: 118(fvec3) ConstantComposite 139 140 141
+ 145: TypeImage 35(float) Cube sampled format:Unknown
+ 146: TypePointer UniformConstant 145
+ 147: 146(ptr) Variable UniformConstant
+ 150: TypeSampledImage 145
+ 154: TypeImage 6(int) Cube sampled format:Unknown
+ 155: TypePointer UniformConstant 154
+ 156: 155(ptr) Variable UniformConstant
+ 159: TypeSampledImage 154
+ 163: TypeImage 63(int) Cube sampled format:Unknown
+ 164: TypePointer UniformConstant 163
+ 165: 164(ptr) Variable UniformConstant
+ 168: TypeSampledImage 163
+ 171: TypeStruct 36(fvec4) 35(float)
+ 172: TypePointer Function 171(struct)
+ 174: 35(float) Constant 1065353216
+ 175: 36(fvec4) ConstantComposite 174 174 174 174
+ 177: TypePointer Function 35(float)
+ 179: TypePointer Output 36(fvec4)
+ 180: 179(ptr) Variable Output
+ 183: TypePointer Output 35(float)
+ 184: 183(ptr) Variable Output
+ 187: 44(ptr) Variable UniformConstant
+ 188: 44(ptr) Variable UniformConstant
+ 189: 40(ptr) Variable UniformConstant
+ 4: 2 Function None 3
+ 5: Label
+ 9: 8(ptr) Variable Function
+ 38: 37(ptr) Variable Function
+ 53: 52(ptr) Variable Function
+ 66: 65(ptr) Variable Function
+ 76: 37(ptr) Variable Function
+ 87: 52(ptr) Variable Function
+ 98: 65(ptr) Variable Function
+ 110: 37(ptr) Variable Function
+ 121: 52(ptr) Variable Function
+ 131: 65(ptr) Variable Function
+ 144: 37(ptr) Variable Function
+ 153: 52(ptr) Variable Function
+ 162: 65(ptr) Variable Function
+ 173: 172(ptr) Variable Function
+ 12: 11(ptr) AccessChain 9 10
+ Store 12 10
+ 14: 11(ptr) AccessChain 9 13
+ Store 14 10
+ 16: 11(ptr) AccessChain 9 15
+ Store 16 10
+ 18: 11(ptr) AccessChain 9 17
+ Store 18 10
+ 20: 11(ptr) AccessChain 9 19
+ Store 20 10
+ 22: 11(ptr) AccessChain 9 21
+ Store 22 10
+ 24: 11(ptr) AccessChain 9 23
+ Store 24 10
+ 26: 11(ptr) AccessChain 9 25
+ Store 26 10
+ 28: 11(ptr) AccessChain 9 27
+ Store 28 10
+ 30: 11(ptr) AccessChain 9 29
+ Store 30 10
+ 32: 11(ptr) AccessChain 9 31
+ Store 32 10
+ 34: 11(ptr) AccessChain 9 33
+ Store 34 10
+ 42: 39 Load 41
+ 46: 43 Load 45
+ 48: 47 SampledImage 42 46
+ 50: 36(fvec4) ImageSampleImplicitLod 48 49
+ Store 38 50
+ 57: 54 Load 56
+ 58: 43 Load 45
+ 60: 59 SampledImage 57 58
+ 62: 51(ivec4) ImageSampleImplicitLod 60 61
+ Store 53 62
+ 70: 67 Load 69
+ 71: 43 Load 45
+ 73: 72 SampledImage 70 71
+ 75: 64(ivec4) ImageSampleImplicitLod 73 74
+ Store 66 75
+ 80: 77 Load 79
+ 81: 43 Load 45
+ 83: 82 SampledImage 80 81
+ 86: 36(fvec4) ImageSampleImplicitLod 83 85
+ Store 76 86
+ 91: 88 Load 90
+ 92: 43 Load 45
+ 94: 93 SampledImage 91 92
+ 97: 51(ivec4) ImageSampleImplicitLod 94 96
+ Store 87 97
+ 102: 99 Load 101
+ 103: 43 Load 45
+ 105: 104 SampledImage 102 103
+ 109: 64(ivec4) ImageSampleImplicitLod 105 108
+ Store 98 109
+ 114: 111 Load 113
+ 115: 43 Load 45
+ 117: 116 SampledImage 114 115
+ 120: 36(fvec4) ImageSampleImplicitLod 117 119
+ Store 110 120
+ 125: 122 Load 124
+ 126: 43 Load 45
+ 128: 127 SampledImage 125 126
+ 130: 51(ivec4) ImageSampleImplicitLod 128 129
+ Store 121 130
+ 135: 132 Load 134
+ 136: 43 Load 45
+ 138: 137 SampledImage 135 136
+ 143: 64(ivec4) ImageSampleImplicitLod 138 142
+ Store 131 143
+ 148: 145 Load 147
+ 149: 43 Load 45
+ 151: 150 SampledImage 148 149
+ 152: 36(fvec4) ImageSampleImplicitLod 151 119
+ Store 144 152
+ 157: 154 Load 156
+ 158: 43 Load 45
+ 160: 159 SampledImage 157 158
+ 161: 51(ivec4) ImageSampleImplicitLod 160 129
+ Store 153 161
+ 166: 163 Load 165
+ 167: 43 Load 45
+ 169: 168 SampledImage 166 167
+ 170: 64(ivec4) ImageSampleImplicitLod 169 142
+ Store 162 170
+ 176: 37(ptr) AccessChain 173 23
+ Store 176 175
+ 178: 177(ptr) AccessChain 173 10
+ Store 178 174
+ 181: 37(ptr) AccessChain 173 23
+ 182: 36(fvec4) Load 181
+ Store 180 182
+ 185: 177(ptr) AccessChain 173 10
+ 186: 35(float) Load 185
+ Store 184 186
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
new file mode 100644
index 0000000..7a40f94
--- /dev/null
+++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
@@ -0,0 +1,30 @@
+remap.hlsl.templatetypes.everything.frag
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 16123
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 4045 4872
+ ExecutionMode 5663 OriginUpperLeft
+ Decorate 4045 Location 0
+ Decorate 4872 Location 0
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 13: TypeFloat 32
+ 29: TypeVector 13(float) 4
+ 2572: 13(float) Constant 0
+ 666: TypePointer Output 29(fvec4)
+ 4045: 666(ptr) Variable Output
+ 667: TypePointer Input 29(fvec4)
+ 4872: 667(ptr) Variable Input
+ 5663: 8 Function None 1282
+ 16122: Label
+ ReturnValue 2572
+ FunctionEnd
diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
new file mode 100644
index 0000000..340198b
--- /dev/null
+++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
@@ -0,0 +1,225 @@
+remap.hlsl.templatetypes.none.frag
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 149
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 146 148
+ ExecutionMode 4 OriginUpperLeft
+ Name 4 "main"
+ Name 9 "r00"
+ Name 15 "r01"
+ Name 20 "r12"
+ Name 24 "r13"
+ Name 27 "r14"
+ Name 30 "r15"
+ Name 34 "r16"
+ Name 38 "r20"
+ Name 43 "r21"
+ Name 48 "r22"
+ Name 52 "r23"
+ Name 57 "r24"
+ Name 62 "r30"
+ Name 66 "r31"
+ Name 71 "r32"
+ Name 75 "r33"
+ Name 80 "r34"
+ Name 85 "r40"
+ Name 89 "r41"
+ Name 92 "r42"
+ Name 95 "r43"
+ Name 100 "r44"
+ Name 105 "r50"
+ Name 122 "r51"
+ Name 125 "r61"
+ Name 130 "r62"
+ Name 136 "r65"
+ Name 141 "r66"
+ Name 146 "@entryPointOutput"
+ Name 148 "input"
+ Decorate 146(@entryPointOutput) Location 0
+ Decorate 148(input) Location 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: 6(float) Constant 1065353216
+ 11: 6(float) Constant 1073741824
+ 12: 6(float) Constant 1077936128
+ 13: 6(float) Constant 1082130432
+ 14: 7(fvec4) ConstantComposite 10 11 12 13
+ 16: 6(float) Constant 1084227584
+ 17: 7(fvec4) ConstantComposite 11 12 13 16
+ 18: TypeBool
+ 19: TypePointer Function 18(bool)
+ 21: 18(bool) ConstantFalse
+ 22: TypeInt 32 1
+ 23: TypePointer Function 22(int)
+ 25: 22(int) Constant 1
+ 26: TypePointer Function 6(float)
+ 28: TypeFloat 64
+ 29: TypePointer Function 28(float)
+ 31: 28(float) Constant 0 1072693248
+ 32: TypeInt 32 0
+ 33: TypePointer Function 32(int)
+ 35: 32(int) Constant 1
+ 36: TypeVector 18(bool) 2
+ 37: TypePointer Function 36(bvec2)
+ 39: 18(bool) ConstantTrue
+ 40: 36(bvec2) ConstantComposite 21 39
+ 41: TypeVector 22(int) 2
+ 42: TypePointer Function 41(ivec2)
+ 44: 22(int) Constant 2
+ 45: 41(ivec2) ConstantComposite 25 44
+ 46: TypeVector 6(float) 2
+ 47: TypePointer Function 46(fvec2)
+ 49: 46(fvec2) ConstantComposite 10 11
+ 50: TypeVector 28(float) 2
+ 51: TypePointer Function 50(fvec2)
+ 53: 28(float) Constant 0 1073741824
+ 54: 50(fvec2) ConstantComposite 31 53
+ 55: TypeVector 32(int) 2
+ 56: TypePointer Function 55(ivec2)
+ 58: 32(int) Constant 2
+ 59: 55(ivec2) ConstantComposite 35 58
+ 60: TypeVector 18(bool) 3
+ 61: TypePointer Function 60(bvec3)
+ 63: 60(bvec3) ConstantComposite 21 39 39
+ 64: TypeVector 22(int) 3
+ 65: TypePointer Function 64(ivec3)
+ 67: 22(int) Constant 3
+ 68: 64(ivec3) ConstantComposite 25 44 67
+ 69: TypeVector 6(float) 3
+ 70: TypePointer Function 69(fvec3)
+ 72: 69(fvec3) ConstantComposite 10 11 12
+ 73: TypeVector 28(float) 3
+ 74: TypePointer Function 73(fvec3)
+ 76: 28(float) Constant 0 1074266112
+ 77: 73(fvec3) ConstantComposite 31 53 76
+ 78: TypeVector 32(int) 3
+ 79: TypePointer Function 78(ivec3)
+ 81: 32(int) Constant 3
+ 82: 78(ivec3) ConstantComposite 35 58 81
+ 83: TypeVector 18(bool) 4
+ 84: TypePointer Function 83(bvec4)
+ 86: 83(bvec4) ConstantComposite 21 39 39 21
+ 87: TypeVector 22(int) 4
+ 88: TypePointer Function 87(ivec4)
+ 90: 22(int) Constant 4
+ 91: 87(ivec4) ConstantComposite 25 44 67 90
+ 93: TypeVector 28(float) 4
+ 94: TypePointer Function 93(fvec4)
+ 96: 28(float) Constant 0 1074790400
+ 97: 93(fvec4) ConstantComposite 31 53 76 96
+ 98: TypeVector 32(int) 4
+ 99: TypePointer Function 98(ivec4)
+ 101: 32(int) Constant 4
+ 102: 98(ivec4) ConstantComposite 35 58 81 101
+ 103: TypeMatrix 7(fvec4) 4
+ 104: TypePointer Function 103
+ 106: 6(float) Constant 0
+ 107: 7(fvec4) ConstantComposite 106 10 11 12
+ 108: 6(float) Constant 1086324736
+ 109: 6(float) Constant 1088421888
+ 110: 7(fvec4) ConstantComposite 13 16 108 109
+ 111: 6(float) Constant 1090519040
+ 112: 6(float) Constant 1091567616
+ 113: 6(float) Constant 1092616192
+ 114: 6(float) Constant 1093664768
+ 115: 7(fvec4) ConstantComposite 111 112 113 114
+ 116: 6(float) Constant 1094713344
+ 117: 6(float) Constant 1095761920
+ 118: 6(float) Constant 1096810496
+ 119: 6(float) Constant 1097859072
+ 120: 7(fvec4) ConstantComposite 116 117 118 119
+ 121: 103 ConstantComposite 107 110 115 120
+ 123: TypeMatrix 69(fvec3) 2
+ 124: TypePointer Function 123
+ 126: 69(fvec3) ConstantComposite 13 16 108
+ 127: 123 ConstantComposite 72 126
+ 128: TypeMatrix 46(fvec2) 3
+ 129: TypePointer Function 128
+ 131: 46(fvec2) ConstantComposite 12 13
+ 132: 46(fvec2) ConstantComposite 16 108
+ 133: 128 ConstantComposite 49 131 132
+ 134: TypeMatrix 46(fvec2) 4
+ 135: TypePointer Function 134
+ 137: 46(fvec2) ConstantComposite 109 111
+ 138: 134 ConstantComposite 49 131 132 137
+ 139: TypeMatrix 69(fvec3) 4
+ 140: TypePointer Function 139
+ 142: 69(fvec3) ConstantComposite 109 111 112
+ 143: 69(fvec3) ConstantComposite 113 114 116
+ 144: 139 ConstantComposite 72 126 142 143
+ 145: TypePointer Output 7(fvec4)
+146(@entryPointOutput): 145(ptr) Variable Output
+ 147: TypePointer Input 7(fvec4)
+ 148(input): 147(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(r00): 8(ptr) Variable Function
+ 15(r01): 8(ptr) Variable Function
+ 20(r12): 19(ptr) Variable Function
+ 24(r13): 23(ptr) Variable Function
+ 27(r14): 26(ptr) Variable Function
+ 30(r15): 29(ptr) Variable Function
+ 34(r16): 33(ptr) Variable Function
+ 38(r20): 37(ptr) Variable Function
+ 43(r21): 42(ptr) Variable Function
+ 48(r22): 47(ptr) Variable Function
+ 52(r23): 51(ptr) Variable Function
+ 57(r24): 56(ptr) Variable Function
+ 62(r30): 61(ptr) Variable Function
+ 66(r31): 65(ptr) Variable Function
+ 71(r32): 70(ptr) Variable Function
+ 75(r33): 74(ptr) Variable Function
+ 80(r34): 79(ptr) Variable Function
+ 85(r40): 84(ptr) Variable Function
+ 89(r41): 88(ptr) Variable Function
+ 92(r42): 8(ptr) Variable Function
+ 95(r43): 94(ptr) Variable Function
+ 100(r44): 99(ptr) Variable Function
+ 105(r50): 104(ptr) Variable Function
+ 122(r51): 104(ptr) Variable Function
+ 125(r61): 124(ptr) Variable Function
+ 130(r62): 129(ptr) Variable Function
+ 136(r65): 135(ptr) Variable Function
+ 141(r66): 140(ptr) Variable Function
+ Store 9(r00) 14
+ Store 15(r01) 17
+ Store 20(r12) 21
+ Store 24(r13) 25
+ Store 27(r14) 10
+ Store 30(r15) 31
+ Store 34(r16) 35
+ Store 38(r20) 40
+ Store 43(r21) 45
+ Store 48(r22) 49
+ Store 52(r23) 54
+ Store 57(r24) 59
+ Store 62(r30) 63
+ Store 66(r31) 68
+ Store 71(r32) 72
+ Store 75(r33) 77
+ Store 80(r34) 82
+ Store 85(r40) 86
+ Store 89(r41) 91
+ Store 92(r42) 14
+ Store 95(r43) 97
+ Store 100(r44) 102
+ Store 105(r50) 121
+ Store 122(r51) 121
+ Store 125(r61) 127
+ Store 130(r62) 133
+ Store 136(r65) 138
+ Store 141(r66) 144
+ ReturnValue 106
+ FunctionEnd
diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out
new file mode 100644
index 0000000..9f98c18
--- /dev/null
+++ b/Test/baseResults/remap.if.everything.frag.out
@@ -0,0 +1,47 @@
+remap.if.everything.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 22855
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 3773 4539
+ ExecutionMode 5663 OriginUpperLeft
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 13: TypeFloat 32
+ 650: TypePointer Input 13(float)
+ 3773: 650(ptr) Variable Input
+ 24: 13(float) Constant 1073741824
+ 9: TypeBool
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Output 29(fvec4)
+ 4539: 666(ptr) Variable Output
+ 947: 13(float) Constant 3204448256
+ 5663: 8 Function None 1282
+ 7911: Label
+ 21734: 13(float) Load 3773
+ 13508: 9(bool) FOrdGreaterThan 21734 24
+ SelectionMerge 19578 None
+ BranchConditional 13508 13182 10142
+ 13182: Label
+ 9496: 13(float) Load 3773
+ 17615: 29(fvec4) CompositeConstruct 9496 9496 9496 9496
+ Store 4539 17615
+ Branch 19578
+ 10142: Label
+ 22854: 13(float) Load 3773
+ 9982: 13(float) FAdd 22854 947
+ 12421: 29(fvec4) CompositeConstruct 9982 9982 9982 9982
+ Store 4539 12421
+ Branch 19578
+ 19578: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out
new file mode 100644
index 0000000..f3113a3
--- /dev/null
+++ b/Test/baseResults/remap.if.none.frag.out
@@ -0,0 +1,51 @@
+remap.if.none.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 25
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 8 17
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 8 "inf"
+ Name 17 "outf4"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypePointer Input 6(float)
+ 8(inf): 7(ptr) Variable Input
+ 10: 6(float) Constant 1073741824
+ 11: TypeBool
+ 15: TypeVector 6(float) 4
+ 16: TypePointer Output 15(fvec4)
+ 17(outf4): 16(ptr) Variable Output
+ 22: 6(float) Constant 3204448256
+ 4(main): 2 Function None 3
+ 5: Label
+ 9: 6(float) Load 8(inf)
+ 12: 11(bool) FOrdGreaterThan 9 10
+ SelectionMerge 14 None
+ BranchConditional 12 13 20
+ 13: Label
+ 18: 6(float) Load 8(inf)
+ 19: 15(fvec4) CompositeConstruct 18 18 18 18
+ Store 17(outf4) 19
+ Branch 14
+ 20: Label
+ 21: 6(float) Load 8(inf)
+ 23: 6(float) FAdd 21 22
+ 24: 15(fvec4) CompositeConstruct 23 23 23 23
+ Store 17(outf4) 24
+ Branch 14
+ 14: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.literal64.everything.spv.out b/Test/baseResults/remap.literal64.everything.spv.out
new file mode 100644
index 0000000..7a4f37b
--- /dev/null
+++ b/Test/baseResults/remap.literal64.everything.spv.out
@@ -0,0 +1,7 @@
+remap.literal64.everything.spv
+// Module Version 10100
+// Generated by (magic number): 70000
+// Id's are bound by 0
+
+ Capability Shader
+ MemoryModel Logical GLSL450
diff --git a/Test/baseResults/remap.literal64.none.spv.out b/Test/baseResults/remap.literal64.none.spv.out
new file mode 100644
index 0000000..792b13a
--- /dev/null
+++ b/Test/baseResults/remap.literal64.none.spv.out
@@ -0,0 +1,25 @@
+remap.literal64.none.spv
+// Module Version 10100
+// Generated by (magic number): 70000
+// Id's are bound by 10
+
+ Capability Shader
+ MemoryModel Logical GLSL450
+ 1: TypeVoid
+ 2: TypeInt 64 1
+ 3: TypeFunction 1
+ 4: 2(int) Constant 0 0
+ 5: 1 Function None 3
+ 6: Label
+ SelectionMerge 7 None
+ Switch 4 7
+ case 0: 0
+ case 8: 1
+ case 0: 9
+ 8: Label
+ Branch 7
+ 9: Label
+ Branch 7
+ 7: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out
new file mode 100644
index 0000000..09589f5
--- /dev/null
+++ b/Test/baseResults/remap.similar_1a.everything.frag.out
@@ -0,0 +1,121 @@
+remap.similar_1a.everything.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24916
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 4201 4539 3773
+ ExecutionMode 5663 OriginUpperLeft
+ Decorate 4201 Flat
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 12: TypeInt 32 1
+ 649: TypePointer Function 12(int)
+ 13: TypeFloat 32
+ 204: TypeFunction 13(float) 649(ptr)
+ 650: TypePointer Function 13(float)
+ 2572: 13(float) Constant 0
+ 2571: 12(int) Constant 0
+ 9: TypeBool
+ 252: 13(float) Constant 1056964608
+ 2574: 12(int) Constant 1
+ 2577: 12(int) Constant 2
+ 26: TypeVector 12(int) 4
+ 663: TypePointer Input 26(ivec4)
+ 4201: 663(ptr) Variable Input
+ 11: TypeInt 32 0
+ 2573: 11(int) Constant 1
+ 651: TypePointer Input 12(int)
+ 2576: 11(int) Constant 2
+ 2570: 11(int) Constant 0
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Output 29(fvec4)
+ 4539: 666(ptr) Variable Output
+ 652: TypePointer Input 13(float)
+ 3773: 652(ptr) Variable Input
+ 5663: 8 Function None 1282
+ 24915: Label
+ 18415: 649(ptr) Variable Function
+ 5786: 649(ptr) Variable Function
+ 8366: 13(float) Load 3773
+ 8654: 12(int) ConvertFToS 8366
+ Store 18415 8654
+ 17256: 13(float) FunctionCall 3782 18415
+ 14512: 13(float) Load 3773
+ 7041: 12(int) ConvertFToS 14512
+ Store 5786 7041
+ 23993: 13(float) FunctionCall 3836 5786
+ 9180: 13(float) FAdd 17256 23993
+ 15728: 29(fvec4) CompositeConstruct 9180 9180 9180 9180
+ Store 4539 15728
+ Return
+ FunctionEnd
+ 3782: 13(float) Function None 204
+ 6931: 649(ptr) FunctionParameter
+ 12220: Label
+ 4292: 650(ptr) Variable Function
+ 4298: 649(ptr) Variable Function
+ Store 4292 2572
+ Store 4298 2571
+ Branch 14924
+ 14924: Label
+ LoopMerge 8882 6488 None
+ Branch 11857
+ 11857: Label
+ 13755: 12(int) Load 4298
+ 22731: 12(int) Load 6931
+ 20007: 9(bool) SLessThan 13755 22731
+ BranchConditional 20007 24750 8882
+ 24750: Label
+ 22912: 13(float) Load 4292
+ 19471: 13(float) FAdd 22912 252
+ Store 4292 19471
+ Branch 6488
+ 6488: Label
+ 19050: 12(int) Load 4298
+ 8593: 12(int) IAdd 19050 2574
+ Store 4298 8593
+ Branch 14924
+ 8882: Label
+ 11601: 13(float) Load 4292
+ ReturnValue 11601
+ FunctionEnd
+ 3836: 13(float) Function None 204
+ 4408: 649(ptr) FunctionParameter
+ 12143: Label
+ 22102: 649(ptr) Variable Function
+ 24151: 12(int) Load 4408
+ 13868: 9(bool) SGreaterThan 24151 2577
+ SelectionMerge 22309 None
+ BranchConditional 13868 9492 17416
+ 9492: Label
+ 15624: 12(int) Load 4408
+ Store 22102 15624
+ 17278: 13(float) FunctionCall 3782 22102
+ ReturnValue 17278
+ 17416: Label
+ 19506: 12(int) Load 4408
+ 22773: 12(int) IMul 19506 2577
+ 13472: 651(ptr) AccessChain 4201 2573
+ 15280: 12(int) Load 13472
+ 18079: 651(ptr) AccessChain 4201 2576
+ 15199: 12(int) Load 18079
+ 9343: 12(int) IMul 15280 15199
+ 11462: 12(int) IAdd 22773 9343
+ 11885: 651(ptr) AccessChain 4201 2570
+ 21176: 12(int) Load 11885
+ 10505: 12(int) IAdd 11462 21176
+ 14626: 13(float) ConvertSToF 10505
+ ReturnValue 14626
+ 22309: Label
+ 6429: 13(float) Undef
+ ReturnValue 6429
+ FunctionEnd
diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out
new file mode 100644
index 0000000..1748451
--- /dev/null
+++ b/Test/baseResults/remap.similar_1a.none.frag.out
@@ -0,0 +1,135 @@
+remap.similar_1a.none.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 82
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 50 69 71
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 11 "Test1(i1;"
+ Name 10 "bound"
+ Name 14 "Test2(i1;"
+ Name 13 "bound"
+ Name 17 "r"
+ Name 19 "x"
+ Name 42 "param"
+ Name 50 "ini4"
+ Name 69 "outf4"
+ Name 71 "inf"
+ Name 74 "param"
+ Name 78 "param"
+ Decorate 50(ini4) Flat
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeFunction 8(float) 7(ptr)
+ 16: TypePointer Function 8(float)
+ 18: 8(float) Constant 0
+ 20: 6(int) Constant 0
+ 28: TypeBool
+ 30: 8(float) Constant 1056964608
+ 34: 6(int) Constant 1
+ 38: 6(int) Constant 2
+ 48: TypeVector 6(int) 4
+ 49: TypePointer Input 48(ivec4)
+ 50(ini4): 49(ptr) Variable Input
+ 51: TypeInt 32 0
+ 52: 51(int) Constant 1
+ 53: TypePointer Input 6(int)
+ 56: 51(int) Constant 2
+ 61: 51(int) Constant 0
+ 67: TypeVector 8(float) 4
+ 68: TypePointer Output 67(fvec4)
+ 69(outf4): 68(ptr) Variable Output
+ 70: TypePointer Input 8(float)
+ 71(inf): 70(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 74(param): 7(ptr) Variable Function
+ 78(param): 7(ptr) Variable Function
+ 72: 8(float) Load 71(inf)
+ 73: 6(int) ConvertFToS 72
+ Store 74(param) 73
+ 75: 8(float) FunctionCall 11(Test1(i1;) 74(param)
+ 76: 8(float) Load 71(inf)
+ 77: 6(int) ConvertFToS 76
+ Store 78(param) 77
+ 79: 8(float) FunctionCall 14(Test2(i1;) 78(param)
+ 80: 8(float) FAdd 75 79
+ 81: 67(fvec4) CompositeConstruct 80 80 80 80
+ Store 69(outf4) 81
+ Return
+ FunctionEnd
+ 11(Test1(i1;): 8(float) Function None 9
+ 10(bound): 7(ptr) FunctionParameter
+ 12: Label
+ 17(r): 16(ptr) Variable Function
+ 19(x): 7(ptr) Variable Function
+ Store 17(r) 18
+ Store 19(x) 20
+ Branch 21
+ 21: Label
+ LoopMerge 23 24 None
+ Branch 25
+ 25: Label
+ 26: 6(int) Load 19(x)
+ 27: 6(int) Load 10(bound)
+ 29: 28(bool) SLessThan 26 27
+ BranchConditional 29 22 23
+ 22: Label
+ 31: 8(float) Load 17(r)
+ 32: 8(float) FAdd 31 30
+ Store 17(r) 32
+ Branch 24
+ 24: Label
+ 33: 6(int) Load 19(x)
+ 35: 6(int) IAdd 33 34
+ Store 19(x) 35
+ Branch 21
+ 23: Label
+ 36: 8(float) Load 17(r)
+ ReturnValue 36
+ FunctionEnd
+ 14(Test2(i1;): 8(float) Function None 9
+ 13(bound): 7(ptr) FunctionParameter
+ 15: Label
+ 42(param): 7(ptr) Variable Function
+ 37: 6(int) Load 13(bound)
+ 39: 28(bool) SGreaterThan 37 38
+ SelectionMerge 41 None
+ BranchConditional 39 40 45
+ 40: Label
+ 43: 6(int) Load 13(bound)
+ Store 42(param) 43
+ 44: 8(float) FunctionCall 11(Test1(i1;) 42(param)
+ ReturnValue 44
+ 45: Label
+ 46: 6(int) Load 13(bound)
+ 47: 6(int) IMul 46 38
+ 54: 53(ptr) AccessChain 50(ini4) 52
+ 55: 6(int) Load 54
+ 57: 53(ptr) AccessChain 50(ini4) 56
+ 58: 6(int) Load 57
+ 59: 6(int) IMul 55 58
+ 60: 6(int) IAdd 47 59
+ 62: 53(ptr) AccessChain 50(ini4) 61
+ 63: 6(int) Load 62
+ 64: 6(int) IAdd 60 63
+ 65: 8(float) ConvertSToF 64
+ ReturnValue 65
+ 41: Label
+ 66: 8(float) Undef
+ ReturnValue 66
+ FunctionEnd
diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out
new file mode 100644
index 0000000..d05be11
--- /dev/null
+++ b/Test/baseResults/remap.similar_1b.everything.frag.out
@@ -0,0 +1,127 @@
+remap.similar_1b.everything.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24916
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 4201 4539 3773
+ ExecutionMode 5663 OriginUpperLeft
+ Decorate 4201 Flat
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 12: TypeInt 32 1
+ 649: TypePointer Function 12(int)
+ 13: TypeFloat 32
+ 204: TypeFunction 13(float) 649(ptr)
+ 650: TypePointer Function 13(float)
+ 2572: 13(float) Constant 0
+ 2571: 12(int) Constant 0
+ 9: TypeBool
+ 252: 13(float) Constant 1056964608
+ 2574: 12(int) Constant 1
+ 2821: 13(float) Constant 1045220557
+ 2577: 12(int) Constant 2
+ 2583: 12(int) Constant 4
+ 26: TypeVector 12(int) 4
+ 663: TypePointer Input 26(ivec4)
+ 4201: 663(ptr) Variable Input
+ 11: TypeInt 32 0
+ 2573: 11(int) Constant 1
+ 651: TypePointer Input 12(int)
+ 2576: 11(int) Constant 2
+ 2570: 11(int) Constant 0
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Output 29(fvec4)
+ 4539: 666(ptr) Variable Output
+ 652: TypePointer Input 13(float)
+ 3773: 652(ptr) Variable Input
+ 5663: 8 Function None 1282
+ 24915: Label
+ 18415: 649(ptr) Variable Function
+ 5786: 649(ptr) Variable Function
+ 8366: 13(float) Load 3773
+ 8654: 12(int) ConvertFToS 8366
+ Store 18415 8654
+ 17256: 13(float) FunctionCall 3782 18415
+ 14512: 13(float) Load 3773
+ 7041: 12(int) ConvertFToS 14512
+ Store 5786 7041
+ 23993: 13(float) FunctionCall 3836 5786
+ 9180: 13(float) FAdd 17256 23993
+ 15728: 29(fvec4) CompositeConstruct 9180 9180 9180 9180
+ Store 4539 15728
+ Return
+ FunctionEnd
+ 3782: 13(float) Function None 204
+ 6931: 649(ptr) FunctionParameter
+ 12220: Label
+ 4292: 650(ptr) Variable Function
+ 4298: 649(ptr) Variable Function
+ Store 4292 2572
+ Store 4298 2571
+ Branch 14924
+ 14924: Label
+ LoopMerge 6507 6488 None
+ Branch 11857
+ 11857: Label
+ 13755: 12(int) Load 4298
+ 22731: 12(int) Load 6931
+ 20007: 9(bool) SLessThan 13755 22731
+ BranchConditional 20007 24750 6507
+ 24750: Label
+ 22912: 13(float) Load 4292
+ 19471: 13(float) FAdd 22912 252
+ Store 4292 19471
+ Branch 6488
+ 6488: Label
+ 19050: 12(int) Load 4298
+ 8593: 12(int) IAdd 19050 2574
+ Store 4298 8593
+ Branch 14924
+ 6507: Label
+ 18877: 13(float) Load 4292
+ 15899: 13(float) FAdd 18877 2821
+ Store 4292 15899
+ 20342: 13(float) Load 4292
+ ReturnValue 20342
+ FunctionEnd
+ 3836: 13(float) Function None 204
+ 4408: 649(ptr) FunctionParameter
+ 12143: Label
+ 22102: 649(ptr) Variable Function
+ 24151: 12(int) Load 4408
+ 13868: 9(bool) SGreaterThan 24151 2577
+ SelectionMerge 22309 None
+ BranchConditional 13868 10822 17416
+ 10822: Label
+ 22680: 12(int) Load 4408
+ 23216: 12(int) IMul 22680 2577
+ Store 22102 23216
+ 7042: 13(float) FunctionCall 3782 22102
+ ReturnValue 7042
+ 17416: Label
+ 19506: 12(int) Load 4408
+ 22773: 12(int) IMul 19506 2583
+ 13472: 651(ptr) AccessChain 4201 2573
+ 15280: 12(int) Load 13472
+ 18079: 651(ptr) AccessChain 4201 2576
+ 15199: 12(int) Load 18079
+ 9343: 12(int) IMul 15280 15199
+ 11462: 12(int) IAdd 22773 9343
+ 11885: 651(ptr) AccessChain 4201 2570
+ 21176: 12(int) Load 11885
+ 10505: 12(int) IAdd 11462 21176
+ 14626: 13(float) ConvertSToF 10505
+ ReturnValue 14626
+ 22309: Label
+ 6429: 13(float) Undef
+ ReturnValue 6429
+ FunctionEnd
diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out
new file mode 100644
index 0000000..f9bf084
--- /dev/null
+++ b/Test/baseResults/remap.similar_1b.none.frag.out
@@ -0,0 +1,141 @@
+remap.similar_1b.none.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 87
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 55 74 76
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 11 "Test1(i1;"
+ Name 10 "bound"
+ Name 14 "Test2(i1;"
+ Name 13 "bound"
+ Name 17 "r"
+ Name 19 "x"
+ Name 47 "param"
+ Name 55 "ini4"
+ Name 74 "outf4"
+ Name 76 "inf"
+ Name 79 "param"
+ Name 83 "param"
+ Decorate 55(ini4) Flat
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypePointer Function 6(int)
+ 8: TypeFloat 32
+ 9: TypeFunction 8(float) 7(ptr)
+ 16: TypePointer Function 8(float)
+ 18: 8(float) Constant 0
+ 20: 6(int) Constant 0
+ 28: TypeBool
+ 30: 8(float) Constant 1056964608
+ 34: 6(int) Constant 1
+ 36: 8(float) Constant 1045220557
+ 41: 6(int) Constant 2
+ 51: 6(int) Constant 4
+ 53: TypeVector 6(int) 4
+ 54: TypePointer Input 53(ivec4)
+ 55(ini4): 54(ptr) Variable Input
+ 56: TypeInt 32 0
+ 57: 56(int) Constant 1
+ 58: TypePointer Input 6(int)
+ 61: 56(int) Constant 2
+ 66: 56(int) Constant 0
+ 72: TypeVector 8(float) 4
+ 73: TypePointer Output 72(fvec4)
+ 74(outf4): 73(ptr) Variable Output
+ 75: TypePointer Input 8(float)
+ 76(inf): 75(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 79(param): 7(ptr) Variable Function
+ 83(param): 7(ptr) Variable Function
+ 77: 8(float) Load 76(inf)
+ 78: 6(int) ConvertFToS 77
+ Store 79(param) 78
+ 80: 8(float) FunctionCall 11(Test1(i1;) 79(param)
+ 81: 8(float) Load 76(inf)
+ 82: 6(int) ConvertFToS 81
+ Store 83(param) 82
+ 84: 8(float) FunctionCall 14(Test2(i1;) 83(param)
+ 85: 8(float) FAdd 80 84
+ 86: 72(fvec4) CompositeConstruct 85 85 85 85
+ Store 74(outf4) 86
+ Return
+ FunctionEnd
+ 11(Test1(i1;): 8(float) Function None 9
+ 10(bound): 7(ptr) FunctionParameter
+ 12: Label
+ 17(r): 16(ptr) Variable Function
+ 19(x): 7(ptr) Variable Function
+ Store 17(r) 18
+ Store 19(x) 20
+ Branch 21
+ 21: Label
+ LoopMerge 23 24 None
+ Branch 25
+ 25: Label
+ 26: 6(int) Load 19(x)
+ 27: 6(int) Load 10(bound)
+ 29: 28(bool) SLessThan 26 27
+ BranchConditional 29 22 23
+ 22: Label
+ 31: 8(float) Load 17(r)
+ 32: 8(float) FAdd 31 30
+ Store 17(r) 32
+ Branch 24
+ 24: Label
+ 33: 6(int) Load 19(x)
+ 35: 6(int) IAdd 33 34
+ Store 19(x) 35
+ Branch 21
+ 23: Label
+ 37: 8(float) Load 17(r)
+ 38: 8(float) FAdd 37 36
+ Store 17(r) 38
+ 39: 8(float) Load 17(r)
+ ReturnValue 39
+ FunctionEnd
+ 14(Test2(i1;): 8(float) Function None 9
+ 13(bound): 7(ptr) FunctionParameter
+ 15: Label
+ 47(param): 7(ptr) Variable Function
+ 40: 6(int) Load 13(bound)
+ 42: 28(bool) SGreaterThan 40 41
+ SelectionMerge 44 None
+ BranchConditional 42 43 49
+ 43: Label
+ 45: 6(int) Load 13(bound)
+ 46: 6(int) IMul 45 41
+ Store 47(param) 46
+ 48: 8(float) FunctionCall 11(Test1(i1;) 47(param)
+ ReturnValue 48
+ 49: Label
+ 50: 6(int) Load 13(bound)
+ 52: 6(int) IMul 50 51
+ 59: 58(ptr) AccessChain 55(ini4) 57
+ 60: 6(int) Load 59
+ 62: 58(ptr) AccessChain 55(ini4) 61
+ 63: 6(int) Load 62
+ 64: 6(int) IMul 60 63
+ 65: 6(int) IAdd 52 64
+ 67: 58(ptr) AccessChain 55(ini4) 66
+ 68: 6(int) Load 67
+ 69: 6(int) IAdd 65 68
+ 70: 8(float) ConvertSToF 69
+ ReturnValue 70
+ 44: Label
+ 71: 8(float) Undef
+ ReturnValue 71
+ FunctionEnd
diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out
new file mode 100644
index 0000000..a1d9b0d
--- /dev/null
+++ b/Test/baseResults/remap.switch.everything.frag.out
@@ -0,0 +1,81 @@
+remap.switch.everything.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ "precision mediump int; precision highp float;"
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 23990
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 3719 3994
+ ExecutionMode 5663 OriginUpperLeft
+ Decorate 3719 Location 0
+ Decorate 3994 RelaxedPrecision
+ Decorate 3994 Location 0
+ Decorate 12421 RelaxedPrecision
+ Decorate 12422 RelaxedPrecision
+ Decorate 12423 RelaxedPrecision
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 13: TypeFloat 32
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Input 29(fvec4)
+ 3719: 666(ptr) Variable Input
+ 11: TypeInt 32 0
+ 2579: 11(int) Constant 3
+ 650: TypePointer Input 13(float)
+ 12: TypeInt 32 1
+ 667: TypePointer Output 29(fvec4)
+ 3994: 667(ptr) Variable Output
+ 2570: 11(int) Constant 0
+ 2572: 13(float) Constant 0
+ 2573: 11(int) Constant 1
+ 138: 13(float) Constant 1065353216
+ 2576: 11(int) Constant 2
+ 24: 13(float) Constant 1073741824
+ 833: 13(float) Constant 3212836864
+ 1284: 29(fvec4) ConstantComposite 833 833 833 833
+ 5663: 8 Function None 1282
+ 23915: Label
+ 7984: 650(ptr) AccessChain 3719 2579
+ 11376: 13(float) Load 7984
+ 16859: 12(int) ConvertFToS 11376
+ SelectionMerge 19578 None
+ Switch 16859 15971
+ case 0: 8158
+ case 1: 8159
+ case 2: 8160
+ 15971: Label
+ Store 3994 1284
+ Branch 19578
+ 8158: Label
+ 21848: 650(ptr) AccessChain 3719 2570
+ 23987: 13(float) Load 21848
+ 19989: 13(float) FAdd 23987 2572
+ 12421: 29(fvec4) CompositeConstruct 19989 19989 19989 19989
+ Store 3994 12421
+ Branch 19578
+ 8159: Label
+ 21849: 650(ptr) AccessChain 3719 2573
+ 23988: 13(float) Load 21849
+ 19990: 13(float) FAdd 23988 138
+ 12422: 29(fvec4) CompositeConstruct 19990 19990 19990 19990
+ Store 3994 12422
+ Branch 19578
+ 8160: Label
+ 21850: 650(ptr) AccessChain 3719 2576
+ 23989: 13(float) Load 21850
+ 19991: 13(float) FAdd 23989 24
+ 12423: 29(fvec4) CompositeConstruct 19991 19991 19991 19991
+ Store 3994 12423
+ Branch 19578
+ 19578: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out
new file mode 100644
index 0000000..7fc8f04
--- /dev/null
+++ b/Test/baseResults/remap.switch.none.frag.out
@@ -0,0 +1,85 @@
+remap.switch.none.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ "precision mediump int; precision highp float;"
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 44
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 9 23
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "in0"
+ Name 23 "FragColor"
+ Decorate 9(in0) Location 0
+ Decorate 23(FragColor) RelaxedPrecision
+ Decorate 23(FragColor) Location 0
+ Decorate 29 RelaxedPrecision
+ Decorate 35 RelaxedPrecision
+ Decorate 41 RelaxedPrecision
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Input 7(fvec4)
+ 9(in0): 8(ptr) Variable Input
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 3
+ 12: TypePointer Input 6(float)
+ 15: TypeInt 32 1
+ 22: TypePointer Output 7(fvec4)
+ 23(FragColor): 22(ptr) Variable Output
+ 24: 10(int) Constant 0
+ 27: 6(float) Constant 0
+ 30: 10(int) Constant 1
+ 33: 6(float) Constant 1065353216
+ 36: 10(int) Constant 2
+ 39: 6(float) Constant 1073741824
+ 42: 6(float) Constant 3212836864
+ 43: 7(fvec4) ConstantComposite 42 42 42 42
+ 4(main): 2 Function None 3
+ 5: Label
+ 13: 12(ptr) AccessChain 9(in0) 11
+ 14: 6(float) Load 13
+ 16: 15(int) ConvertFToS 14
+ SelectionMerge 21 None
+ Switch 16 20
+ case 0: 17
+ case 1: 18
+ case 2: 19
+ 20: Label
+ Store 23(FragColor) 43
+ Branch 21
+ 17: Label
+ 25: 12(ptr) AccessChain 9(in0) 24
+ 26: 6(float) Load 25
+ 28: 6(float) FAdd 26 27
+ 29: 7(fvec4) CompositeConstruct 28 28 28 28
+ Store 23(FragColor) 29
+ Branch 21
+ 18: Label
+ 31: 12(ptr) AccessChain 9(in0) 30
+ 32: 6(float) Load 31
+ 34: 6(float) FAdd 32 33
+ 35: 7(fvec4) CompositeConstruct 34 34 34 34
+ Store 23(FragColor) 35
+ Branch 21
+ 19: Label
+ 37: 12(ptr) AccessChain 9(in0) 36
+ 38: 6(float) Load 37
+ 40: 6(float) FAdd 38 39
+ 41: 7(fvec4) CompositeConstruct 40 40 40 40
+ Store 23(FragColor) 41
+ Branch 21
+ 21: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out
new file mode 100644
index 0000000..18defec
--- /dev/null
+++ b/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -0,0 +1,67 @@
+remap.uniformarray.everything.frag
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 25030
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 5663 "main" 3608 4957 4339 5139
+ ExecutionMode 5663 OriginUpperLeft
+ 8: TypeVoid
+ 1282: TypeFunction 8
+ 13: TypeFloat 32
+ 29: TypeVector 13(float) 4
+ 666: TypePointer Function 29(fvec4)
+ 11: TypeInt 32 0
+ 2588: 11(int) Constant 6
+ 740: TypeArray 29(fvec4) 2588
+ 1377: TypePointer Input 740
+ 3608: 1377(ptr) Variable Input
+ 12: TypeInt 32 1
+ 2574: 12(int) Constant 1
+ 667: TypePointer Input 29(fvec4)
+ 24: TypeVector 13(float) 3
+ 661: TypePointer Input 24(fvec3)
+ 4957: 661(ptr) Variable Input
+ 2618: 11(int) Constant 16
+ 669: TypeArray 13(float) 2618
+ 1306: TypePointer Input 669
+ 4339: 1306(ptr) Variable Input
+ 2607: 12(int) Constant 12
+ 650: TypePointer Input 13(float)
+ 2579: 11(int) Constant 3
+ 651: TypePointer Function 13(float)
+ 668: TypePointer Output 29(fvec4)
+ 5139: 668(ptr) Variable Output
+ 5663: 8 Function None 1282
+ 25029: Label
+ 4902: 666(ptr) Variable Function
+ 10645: 667(ptr) AccessChain 3608 2574
+ 8181: 29(fvec4) Load 10645
+ 21370: 667(ptr) AccessChain 3608 2574
+ 11355: 29(fvec4) Load 21370
+ 23084: 29(fvec4) FAdd 8181 11355
+ Store 4902 23084
+ 21218: 24(fvec3) Load 4957
+ 13695: 29(fvec4) Load 4902
+ 23883: 24(fvec3) VectorShuffle 13695 13695 0 1 2
+ 15591: 24(fvec3) FAdd 23883 21218
+ 17086: 29(fvec4) Load 4902
+ 7051: 29(fvec4) VectorShuffle 17086 15591 4 5 6 3
+ Store 4902 7051
+ 18282: 650(ptr) AccessChain 4339 2607
+ 7372: 13(float) Load 18282
+ 21371: 651(ptr) AccessChain 4902 2579
+ 11412: 13(float) Load 21371
+ 22584: 13(float) FAdd 11412 7372
+ 17318: 651(ptr) AccessChain 4902 2579
+ Store 17318 22584
+ 17934: 29(fvec4) Load 4902
+ Store 5139 17934
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out
new file mode 100644
index 0000000..ff2489e
--- /dev/null
+++ b/Test/baseResults/remap.uniformarray.none.frag.out
@@ -0,0 +1,80 @@
+remap.uniformarray.none.frag
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 53
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 14 25 35 47
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 140
+ Name 4 "main"
+ Name 9 "texColor"
+ Name 14 "color"
+ Name 25 "inColor"
+ Name 35 "alpha"
+ Name 47 "gl_FragColor"
+ Name 52 "texSampler2D"
+ Decorate 52(texSampler2D) DescriptorSet 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 6
+ 12: TypeArray 7(fvec4) 11
+ 13: TypePointer Input 12
+ 14(color): 13(ptr) Variable Input
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 1
+ 17: TypePointer Input 7(fvec4)
+ 23: TypeVector 6(float) 3
+ 24: TypePointer Input 23(fvec3)
+ 25(inColor): 24(ptr) Variable Input
+ 32: 10(int) Constant 16
+ 33: TypeArray 6(float) 32
+ 34: TypePointer Input 33
+ 35(alpha): 34(ptr) Variable Input
+ 36: 15(int) Constant 12
+ 37: TypePointer Input 6(float)
+ 40: 10(int) Constant 3
+ 41: TypePointer Function 6(float)
+ 46: TypePointer Output 7(fvec4)
+47(gl_FragColor): 46(ptr) Variable Output
+ 49: TypeImage 6(float) 2D sampled format:Unknown
+ 50: TypeSampledImage 49
+ 51: TypePointer UniformConstant 50
+52(texSampler2D): 51(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(texColor): 8(ptr) Variable Function
+ 18: 17(ptr) AccessChain 14(color) 16
+ 19: 7(fvec4) Load 18
+ 20: 17(ptr) AccessChain 14(color) 16
+ 21: 7(fvec4) Load 20
+ 22: 7(fvec4) FAdd 19 21
+ Store 9(texColor) 22
+ 26: 23(fvec3) Load 25(inColor)
+ 27: 7(fvec4) Load 9(texColor)
+ 28: 23(fvec3) VectorShuffle 27 27 0 1 2
+ 29: 23(fvec3) FAdd 28 26
+ 30: 7(fvec4) Load 9(texColor)
+ 31: 7(fvec4) VectorShuffle 30 29 4 5 6 3
+ Store 9(texColor) 31
+ 38: 37(ptr) AccessChain 35(alpha) 36
+ 39: 6(float) Load 38
+ 42: 41(ptr) AccessChain 9(texColor) 40
+ 43: 6(float) Load 42
+ 44: 6(float) FAdd 43 39
+ 45: 41(ptr) AccessChain 9(texColor) 40
+ Store 45 44
+ 48: 7(fvec4) Load 9(texColor)
+ Store 47(gl_FragColor) 48
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out
index 5274913..c3ad2b9 100755
--- a/Test/baseResults/spv.430.vert.out
+++ b/Test/baseResults/spv.430.vert.out
@@ -63,6 +63,7 @@
Decorate 55(sampb2) Binding 5
Decorate 56(sampb4) DescriptorSet 0
Decorate 56(sampb4) Binding 31
+ MemberDecorate 59(S) 0 RelaxedPrecision
Decorate 62(var) Flat
Decorate 62(var) Location 0
MemberDecorate 63(MS) 0 Location 17
diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out
index c6c08b2..2900fdf 100755
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -7,12 +7,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 17
+// Id's are bound by 23
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 9 16
+ EntryPoint TessellationControl 4 "main" 9 16 19 22
ExecutionMode 4 OutputVertices 4
Source GLSL 450
Name 4 "main"
@@ -25,12 +25,39 @@
MemberName 11(TheBlock) 1 "bMem2"
MemberName 11(TheBlock) 2 "s"
Name 16 "tcBlock"
+ Name 17 "SingleBlock"
+ MemberName 17(SingleBlock) 0 "bMem1"
+ MemberName 17(SingleBlock) 1 "bMem2"
+ MemberName 17(SingleBlock) 2 "s"
+ Name 19 "singleBlock"
+ Name 20 "bn"
+ MemberName 20(bn) 0 "v1"
+ MemberName 20(bn) 1 "v2"
+ MemberName 20(bn) 2 "v3"
+ Name 22 ""
Decorate 9(patchOut) Patch
MemberDecorate 11(TheBlock) 0 Patch
MemberDecorate 11(TheBlock) 1 Patch
MemberDecorate 11(TheBlock) 2 Patch
Decorate 11(TheBlock) Block
Decorate 16(tcBlock) Location 12
+ MemberDecorate 17(SingleBlock) 0 Patch
+ MemberDecorate 17(SingleBlock) 0 Location 2
+ MemberDecorate 17(SingleBlock) 1 Patch
+ MemberDecorate 17(SingleBlock) 1 Location 3
+ MemberDecorate 17(SingleBlock) 2 Patch
+ MemberDecorate 17(SingleBlock) 2 Location 4
+ Decorate 17(SingleBlock) Block
+ Decorate 19(singleBlock) Location 2
+ MemberDecorate 20(bn) 0 Patch
+ MemberDecorate 20(bn) 0 Location 20
+ MemberDecorate 20(bn) 0 Component 0
+ MemberDecorate 20(bn) 1 Patch
+ MemberDecorate 20(bn) 1 Location 24
+ MemberDecorate 20(bn) 2 Patch
+ MemberDecorate 20(bn) 2 Location 25
+ MemberDecorate 20(bn) 2 Component 0
+ Decorate 20(bn) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -44,6 +71,12 @@
14: TypeArray 11(TheBlock) 13
15: TypePointer Output 14
16(tcBlock): 15(ptr) Variable Output
+ 17(SingleBlock): TypeStruct 6(float) 6(float) 10(S)
+ 18: TypePointer Output 17(SingleBlock)
+ 19(singleBlock): 18(ptr) Variable Output
+ 20(bn): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
+ 21: TypePointer Output 20(bn)
+ 22: 21(ptr) Variable Output
4(main): 2 Function None 3
5: Label
Return
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index e9a9d81..3d391c3 100755
--- a/Test/baseResults/spv.accessChain.frag.out
+++ b/Test/baseResults/spv.accessChain.frag.out
@@ -7,12 +7,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 197
+// Id's are bound by 206
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 65 149
+ EntryPoint Fragment 4 "main" 65 158
ExecutionMode 4 OriginUpperLeft
Source GLSL 420
Name 4 "main"
@@ -57,22 +57,22 @@
Name 60 "i"
Name 61 "comp"
Name 65 "OutColor"
- Name 144 "s"
- Name 149 "u"
- Name 150 "param"
- Name 154 "param"
- Name 158 "param"
- Name 162 "param"
- Name 166 "param"
- Name 170 "param"
- Name 174 "param"
- Name 178 "param"
- Name 182 "param"
- Name 186 "param"
- Name 190 "param"
- Name 194 "param"
+ Name 153 "s"
+ Name 158 "u"
+ Name 159 "param"
+ Name 163 "param"
+ Name 167 "param"
+ Name 171 "param"
+ Name 175 "param"
+ Name 179 "param"
+ Name 183 "param"
+ Name 187 "param"
+ Name 191 "param"
+ Name 195 "param"
+ Name 199 "param"
+ Name 203 "param"
Decorate 65(OutColor) Location 0
- Decorate 149(u) Flat
+ Decorate 158(u) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -90,77 +90,77 @@
95: TypeVector 6(float) 2
109: 67(int) Constant 2
136: TypePointer Output 6(float)
- 141: 6(float) Constant 0
- 142: 7(fvec3) ConstantComposite 141 141 141
- 143: TypePointer Function 8(S)
- 148: TypePointer Input 13(int)
- 149(u): 148(ptr) Variable Input
+ 150: 6(float) Constant 0
+ 151: 7(fvec3) ConstantComposite 150 150 150
+ 152: TypePointer Function 8(S)
+ 157: TypePointer Input 13(int)
+ 158(u): 157(ptr) Variable Input
4(main): 2 Function None 3
5: Label
- 144(s): 143(ptr) Variable Function
- 150(param): 14(ptr) Variable Function
- 154(param): 14(ptr) Variable Function
- 158(param): 14(ptr) Variable Function
- 162(param): 14(ptr) Variable Function
- 166(param): 14(ptr) Variable Function
- 170(param): 14(ptr) Variable Function
- 174(param): 14(ptr) Variable Function
- 178(param): 14(ptr) Variable Function
- 182(param): 14(ptr) Variable Function
- 186(param): 14(ptr) Variable Function
- 190(param): 14(ptr) Variable Function
- 194(param): 14(ptr) Variable Function
- Store 65(OutColor) 142
- 145: 8(S) Load 144(s)
- 146: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 145
- 147: 8(S) Load 144(s)
- 151: 13(int) Load 149(u)
- Store 150(param) 151
- 152: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 147 150(param)
- 153: 8(S) Load 144(s)
- 155: 13(int) Load 149(u)
- Store 154(param) 155
- 156: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 153 154(param)
- 157: 8(S) Load 144(s)
- 159: 13(int) Load 149(u)
- Store 158(param) 159
- 160: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 157 158(param)
- 161: 8(S) Load 144(s)
- 163: 13(int) Load 149(u)
- Store 162(param) 163
- 164: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 161 162(param)
- 165: 8(S) Load 144(s)
- 167: 13(int) Load 149(u)
- Store 166(param) 167
- 168: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 165 166(param)
- 169: 8(S) Load 144(s)
- 171: 13(int) Load 149(u)
- Store 170(param) 171
- 172: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 169 170(param)
- 173: 8(S) Load 144(s)
- 175: 13(int) Load 149(u)
- Store 174(param) 175
- 176: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 173 174(param)
- 177: 8(S) Load 144(s)
- 179: 13(int) Load 149(u)
- Store 178(param) 179
- 180: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 177 178(param)
- 181: 8(S) Load 144(s)
- 183: 13(int) Load 149(u)
- Store 182(param) 183
- 184: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 181 182(param)
- 185: 8(S) Load 144(s)
- 187: 13(int) Load 149(u)
- Store 186(param) 187
- 188: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 185 186(param)
- 189: 8(S) Load 144(s)
- 191: 13(int) Load 149(u)
- Store 190(param) 191
- 192: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 189 190(param)
- 193: 8(S) Load 144(s)
- 195: 13(int) Load 149(u)
- Store 194(param) 195
- 196: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 193 194(param)
+ 153(s): 152(ptr) Variable Function
+ 159(param): 14(ptr) Variable Function
+ 163(param): 14(ptr) Variable Function
+ 167(param): 14(ptr) Variable Function
+ 171(param): 14(ptr) Variable Function
+ 175(param): 14(ptr) Variable Function
+ 179(param): 14(ptr) Variable Function
+ 183(param): 14(ptr) Variable Function
+ 187(param): 14(ptr) Variable Function
+ 191(param): 14(ptr) Variable Function
+ 195(param): 14(ptr) Variable Function
+ 199(param): 14(ptr) Variable Function
+ 203(param): 14(ptr) Variable Function
+ Store 65(OutColor) 151
+ 154: 8(S) Load 153(s)
+ 155: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 154
+ 156: 8(S) Load 153(s)
+ 160: 13(int) Load 158(u)
+ Store 159(param) 160
+ 161: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 156 159(param)
+ 162: 8(S) Load 153(s)
+ 164: 13(int) Load 158(u)
+ Store 163(param) 164
+ 165: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 162 163(param)
+ 166: 8(S) Load 153(s)
+ 168: 13(int) Load 158(u)
+ Store 167(param) 168
+ 169: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 166 167(param)
+ 170: 8(S) Load 153(s)
+ 172: 13(int) Load 158(u)
+ Store 171(param) 172
+ 173: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 170 171(param)
+ 174: 8(S) Load 153(s)
+ 176: 13(int) Load 158(u)
+ Store 175(param) 176
+ 177: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 174 175(param)
+ 178: 8(S) Load 153(s)
+ 180: 13(int) Load 158(u)
+ Store 179(param) 180
+ 181: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 178 179(param)
+ 182: 8(S) Load 153(s)
+ 184: 13(int) Load 158(u)
+ Store 183(param) 184
+ 185: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 182 183(param)
+ 186: 8(S) Load 153(s)
+ 188: 13(int) Load 158(u)
+ Store 187(param) 188
+ 189: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 186 187(param)
+ 190: 8(S) Load 153(s)
+ 192: 13(int) Load 158(u)
+ Store 191(param) 192
+ 193: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 190 191(param)
+ 194: 8(S) Load 153(s)
+ 196: 13(int) Load 158(u)
+ Store 195(param) 196
+ 197: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 194 195(param)
+ 198: 8(S) Load 153(s)
+ 200: 13(int) Load 158(u)
+ Store 199(param) 200
+ 201: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 198 199(param)
+ 202: 8(S) Load 153(s)
+ 204: 13(int) Load 158(u)
+ Store 203(param) 204
+ 205: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 202 203(param)
Return
FunctionEnd
11(GetColor1(struct-S-vf31;): 2 Function None 9
@@ -319,5 +319,15 @@
60(i): 8(S) FunctionParameter
61(comp): 14(ptr) FunctionParameter
63: Label
+ 141: 13(int) Load 61(comp)
+ 142: 6(float) CompositeExtract 60(i) 0 0
+ 143: 7(fvec3) Load 65(OutColor)
+ 144: 95(fvec2) VectorShuffle 143 143 2 1
+ 145: 6(float) VectorExtractDynamic 144 141
+ 146: 6(float) FAdd 145 142
+ 147: 7(fvec3) Load 65(OutColor)
+ 148: 7(fvec3) VectorShuffle 147 147 2 1 2
+ 149: 7(fvec3) VectorInsertDynamic 148 146 141
+ Store 65(OutColor) 149
Return
FunctionEnd
diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out
index 4888bea..5a19d2f 100644
--- a/Test/baseResults/spv.aggOps.frag.out
+++ b/Test/baseResults/spv.aggOps.frag.out
@@ -1,5 +1,7 @@
spv.aggOps.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+WARNING: 0:4: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ "precision mediump int; precision highp float;"
Linked fragment stage:
@@ -64,6 +66,11 @@
Decorate 66(ub2) BufferBlock
Decorate 68(uName2) DescriptorSet 0
Decorate 97(samp2D) DescriptorSet 0
+ Decorate 101(coord) RelaxedPrecision
+ Decorate 102 RelaxedPrecision
+ Decorate 107 RelaxedPrecision
+ Decorate 108 RelaxedPrecision
+ Decorate 129 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out
index fab7f3d..c5fe438 100644
--- a/Test/baseResults/spv.for-complex-condition.vert.out
+++ b/Test/baseResults/spv.for-complex-condition.vert.out
@@ -18,7 +18,9 @@
Name 8 "i"
Name 18 "flag"
Name 31 "r"
+ Decorate 18(flag) RelaxedPrecision
Decorate 18(flag) Location 0
+ Decorate 19 RelaxedPrecision
Decorate 31(r) Location 0
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out
index 346523c..a804e1d 100755
--- a/Test/baseResults/spv.forwardFun.frag.out
+++ b/Test/baseResults/spv.forwardFun.frag.out
@@ -25,6 +25,26 @@
Name 30 "gl_FragColor"
Name 36 "d"
Name 59 "bigColor"
+ Decorate 10(unreachableReturn() RelaxedPrecision
+ Decorate 16(foo(vf4;) RelaxedPrecision
+ Decorate 15(bar) RelaxedPrecision
+ Decorate 18(color) RelaxedPrecision
+ Decorate 20(BaseColor) RelaxedPrecision
+ Decorate 22 RelaxedPrecision
+ Decorate 23 RelaxedPrecision
+ Decorate 24 RelaxedPrecision
+ Decorate 27(f) RelaxedPrecision
+ Decorate 28 RelaxedPrecision
+ Decorate 30(gl_FragColor) RelaxedPrecision
+ Decorate 31 RelaxedPrecision
+ Decorate 32 RelaxedPrecision
+ Decorate 33 RelaxedPrecision
+ Decorate 36(d) RelaxedPrecision
+ Decorate 37 RelaxedPrecision
+ Decorate 52 RelaxedPrecision
+ Decorate 55 RelaxedPrecision
+ Decorate 56 RelaxedPrecision
+ Decorate 59(bigColor) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index fe45013..acfee73 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -5,10 +5,9 @@
Linked fragment stage:
-Missing functionality: shader int64
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 455
+// Id's are bound by 480
Capability Shader
Capability Float64
@@ -24,603 +23,635 @@
Name 8 "typeCast("
Name 10 "operators("
Name 12 "builtinFuncs("
- Name 16 "i64"
- Name 24 "Uniforms"
- MemberName 24(Uniforms) 0 "index"
- Name 26 ""
- Name 33 "indexable"
- Name 38 "u64"
- Name 47 "indexable"
- Name 52 "i64v"
- Name 56 "bv"
- Name 65 "u64v"
- Name 74 "iv"
- Name 81 "uv"
- Name 89 "fv"
- Name 95 "dv"
- Name 132 "u64v"
- Name 137 "i64"
- Name 157 "i"
- Name 164 "uv"
- Name 216 "b"
- Name 276 "i64v"
- Name 279 "i64"
- Name 289 "u64v"
- Name 291 "u64"
- Name 363 "dv"
- Name 382 "iv"
- Name 387 "uv"
- Name 391 "bv"
- Name 452 "Block"
- MemberName 452(Block) 0 "i64v"
- MemberName 452(Block) 1 "u64"
- Name 454 "block"
- MemberDecorate 24(Uniforms) 0 Offset 0
- Decorate 24(Uniforms) Block
- Decorate 26 DescriptorSet 0
- Decorate 26 Binding 0
- MemberDecorate 452(Block) 0 Offset 0
- MemberDecorate 452(Block) 1 Offset 24
- Decorate 452(Block) Block
- Decorate 454(block) DescriptorSet 0
- Decorate 454(block) Binding 1
+ Name 16 "u64Max"
+ Name 20 "i64"
+ Name 28 "Uniforms"
+ MemberName 28(Uniforms) 0 "index"
+ Name 30 ""
+ Name 37 "indexable"
+ Name 41 "u64"
+ Name 49 "indexable"
+ Name 54 "i64v"
+ Name 58 "bv"
+ Name 67 "u64v"
+ Name 76 "iv"
+ Name 83 "uv"
+ Name 91 "fv"
+ Name 97 "dv"
+ Name 134 "u64v"
+ Name 139 "i64"
+ Name 159 "i"
+ Name 166 "uv"
+ Name 218 "b"
+ Name 278 "i64v"
+ Name 281 "i64"
+ Name 291 "u64v"
+ Name 293 "u64"
+ Name 365 "dv"
+ Name 384 "iv"
+ Name 389 "uv"
+ Name 393 "bv"
+ Name 454 "Block"
+ MemberName 454(Block) 0 "i64v"
+ MemberName 454(Block) 1 "u64"
+ Name 456 "block"
+ MemberDecorate 28(Uniforms) 0 Offset 0
+ Decorate 28(Uniforms) Block
+ Decorate 30 DescriptorSet 0
+ Decorate 30 Binding 0
+ MemberDecorate 454(Block) 0 Offset 0
+ MemberDecorate 454(Block) 1 Offset 24
+ Decorate 454(Block) Block
+ Decorate 456(block) DescriptorSet 0
+ Decorate 456(block) Binding 1
+ Decorate 457 SpecId 100
+ Decorate 458 SpecId 101
+ Decorate 459 SpecId 102
+ Decorate 460 SpecId 103
+ Decorate 461 SpecId 104
2: TypeVoid
3: TypeFunction 2
- 14: TypeInt 64 1
- 15: TypePointer Function 14(int)
- 17: TypeInt 32 0
- 18: 17(int) Constant 3
- 19: TypeArray 14(int) 18
- 20: 14(int) Constant 4008636143 4008636142
- 21: 14(int) Constant 4294967295 4294967295
- 22: 14(int) Constant 0 1
- 23: 19 ConstantComposite 20 21 22
- 24(Uniforms): TypeStruct 17(int)
- 25: TypePointer Uniform 24(Uniforms)
- 26: 25(ptr) Variable Uniform
- 27: TypeInt 32 1
- 28: 27(int) Constant 0
- 29: TypePointer Uniform 17(int)
- 32: TypePointer Function 19
- 36: TypeInt 64 0
- 37: TypePointer Function 36(int)
- 39: TypeArray 36(int) 18
- 40: 36(int) Constant 4294967295 4294967295
- 41: 36(int) Constant 0 1
- 42: 36(int) Constant 4294967295 1
- 43: 39 ConstantComposite 40 41 42
- 46: TypePointer Function 39
- 50: TypeVector 14(int) 2
- 51: TypePointer Function 50(ivec2)
- 53: TypeBool
- 54: TypeVector 53(bool) 2
- 55: TypePointer Function 54(bvec2)
- 58: 14(int) Constant 0 0
- 59: 14(int) Constant 1 0
- 60: 50(ivec2) ConstantComposite 58 58
- 61: 50(ivec2) ConstantComposite 59 59
- 63: TypeVector 36(int) 2
- 64: TypePointer Function 63(ivec2)
- 67: 36(int) Constant 0 0
- 68: 36(int) Constant 1 0
- 69: 63(ivec2) ConstantComposite 67 67
- 70: 63(ivec2) ConstantComposite 68 68
- 72: TypeVector 27(int) 2
- 73: TypePointer Function 72(ivec2)
- 79: TypeVector 17(int) 2
- 80: TypePointer Function 79(ivec2)
- 86: TypeFloat 32
- 87: TypeVector 86(float) 2
- 88: TypePointer Function 87(fvec2)
- 92: TypeFloat 64
- 93: TypeVector 92(float) 2
- 94: TypePointer Function 93(fvec2)
- 130: TypeVector 36(int) 3
- 131: TypePointer Function 130(ivec3)
- 134: TypeVector 14(int) 3
- 156: TypePointer Function 27(int)
- 162: TypeVector 17(int) 3
- 163: TypePointer Function 162(ivec3)
- 197: TypeVector 27(int) 3
- 200: 17(int) Constant 1
- 201: TypePointer Function 17(int)
- 207: 17(int) Constant 2
- 215: TypePointer Function 53(bool)
- 217: 17(int) Constant 0
- 287: 50(ivec2) ConstantComposite 21 21
- 296: 130(ivec3) ConstantComposite 67 67 67
- 338: 53(bool) ConstantTrue
- 345: 53(bool) ConstantFalse
- 346: 54(bvec2) ConstantComposite 345 345
- 358: TypeVector 53(bool) 3
- 359: 358(bvec3) ConstantComposite 345 345 345
- 361: TypeVector 92(float) 3
- 362: TypePointer Function 361(fvec3)
- 367: TypePointer Function 92(float)
- 378: 27(int) Constant 1
- 379: 27(int) Constant 2
- 380: 72(ivec2) ConstantComposite 378 379
- 385: 79(ivec2) ConstantComposite 207 18
- 390: TypePointer Function 358(bvec3)
- 452(Block): TypeStruct 134(ivec3) 36(int)
- 453: TypePointer Uniform 452(Block)
- 454(block): 453(ptr) Variable Uniform
+ 14: TypeInt 64 0
+ 15: TypePointer Private 14(int)
+ 16(u64Max): 15(ptr) Variable Private
+ 17: 14(int) Constant 4294967295 4294967295
+ 18: TypeInt 64 1
+ 19: TypePointer Function 18(int)
+ 21: TypeInt 32 0
+ 22: 21(int) Constant 3
+ 23: TypeArray 18(int) 22
+ 24: 18(int) Constant 4008636143 4008636142
+ 25: 18(int) Constant 4294967295 4294967295
+ 26: 18(int) Constant 0 1
+ 27: 23 ConstantComposite 24 25 26
+ 28(Uniforms): TypeStruct 21(int)
+ 29: TypePointer Uniform 28(Uniforms)
+ 30: 29(ptr) Variable Uniform
+ 31: TypeInt 32 1
+ 32: 31(int) Constant 0
+ 33: TypePointer Uniform 21(int)
+ 36: TypePointer Function 23
+ 40: TypePointer Function 14(int)
+ 42: TypeArray 14(int) 22
+ 43: 14(int) Constant 0 1
+ 44: 14(int) Constant 4294967295 1
+ 45: 42 ConstantComposite 17 43 44
+ 48: TypePointer Function 42
+ 52: TypeVector 18(int) 2
+ 53: TypePointer Function 52(ivec2)
+ 55: TypeBool
+ 56: TypeVector 55(bool) 2
+ 57: TypePointer Function 56(bvec2)
+ 60: 18(int) Constant 0 0
+ 61: 18(int) Constant 1 0
+ 62: 52(ivec2) ConstantComposite 60 60
+ 63: 52(ivec2) ConstantComposite 61 61
+ 65: TypeVector 14(int) 2
+ 66: TypePointer Function 65(ivec2)
+ 69: 14(int) Constant 0 0
+ 70: 14(int) Constant 1 0
+ 71: 65(ivec2) ConstantComposite 69 69
+ 72: 65(ivec2) ConstantComposite 70 70
+ 74: TypeVector 31(int) 2
+ 75: TypePointer Function 74(ivec2)
+ 81: TypeVector 21(int) 2
+ 82: TypePointer Function 81(ivec2)
+ 88: TypeFloat 32
+ 89: TypeVector 88(float) 2
+ 90: TypePointer Function 89(fvec2)
+ 94: TypeFloat 64
+ 95: TypeVector 94(float) 2
+ 96: TypePointer Function 95(fvec2)
+ 132: TypeVector 14(int) 3
+ 133: TypePointer Function 132(ivec3)
+ 136: TypeVector 18(int) 3
+ 158: TypePointer Function 31(int)
+ 164: TypeVector 21(int) 3
+ 165: TypePointer Function 164(ivec3)
+ 199: TypeVector 31(int) 3
+ 202: 21(int) Constant 1
+ 203: TypePointer Function 21(int)
+ 209: 21(int) Constant 2
+ 217: TypePointer Function 55(bool)
+ 219: 21(int) Constant 0
+ 289: 52(ivec2) ConstantComposite 25 25
+ 298: 132(ivec3) ConstantComposite 69 69 69
+ 340: 55(bool) ConstantTrue
+ 347: 55(bool) ConstantFalse
+ 348: 56(bvec2) ConstantComposite 347 347
+ 360: TypeVector 55(bool) 3
+ 361: 360(bvec3) ConstantComposite 347 347 347
+ 363: TypeVector 94(float) 3
+ 364: TypePointer Function 363(fvec3)
+ 369: TypePointer Function 94(float)
+ 380: 31(int) Constant 1
+ 381: 31(int) Constant 2
+ 382: 74(ivec2) ConstantComposite 380 381
+ 387: 81(ivec2) ConstantComposite 209 22
+ 392: TypePointer Function 360(bvec3)
+ 454(Block): TypeStruct 136(ivec3) 14(int)
+ 455: TypePointer Uniform 454(Block)
+ 456(block): 455(ptr) Variable Uniform
+ 457: 18(int) SpecConstant 4294967286 4294967295
+ 458: 14(int) SpecConstant 20 0
+ 459: 31(int) SpecConstant 4294967291
+ 460: 21(int) SpecConstant 4
+ 461: 55(bool) SpecConstantTrue
+ 462: 55(bool) SpecConstantOp 171 457 69
+ 463: 55(bool) SpecConstantOp 171 458 69
+ 464: 18(int) SpecConstantOp 169 461 61 60
+ 465: 14(int) SpecConstantOp 169 461 70 69
+ 466: 31(int) SpecConstantOp 114 457
+ 467: 18(int) SpecConstantOp 114 459
+ 468: 21(int) SpecConstantOp 113 458
+ 469: 14(int) SpecConstantOp 113 460
+ 470: 18(int) SpecConstantOp 128 458 69
+ 471: 14(int) SpecConstantOp 128 457 69
+ 472: 21(int) SpecConstantOp 113 458
+ 473: 31(int) SpecConstantOp 128 472 219
+ 474: 18(int) SpecConstantOp 114 459
+ 475: 14(int) SpecConstantOp 128 474 69
+ 476: 31(int) SpecConstantOp 114 457
+ 477: 21(int) SpecConstantOp 128 476 219
+ 478: 14(int) SpecConstantOp 113 460
+ 479: 18(int) SpecConstantOp 128 478 69
4(main): 2 Function None 3
5: Label
+ Store 16(u64Max) 17
Return
FunctionEnd
6(literal(): 2 Function None 3
7: Label
- 16(i64): 15(ptr) Variable Function
- 33(indexable): 32(ptr) Variable Function
- 38(u64): 37(ptr) Variable Function
- 47(indexable): 46(ptr) Variable Function
- 30: 29(ptr) AccessChain 26 28
- 31: 17(int) Load 30
- Store 33(indexable) 23
- 34: 15(ptr) AccessChain 33(indexable) 31
- 35: 14(int) Load 34
- Store 16(i64) 35
- 44: 29(ptr) AccessChain 26 28
- 45: 17(int) Load 44
- Store 47(indexable) 43
- 48: 37(ptr) AccessChain 47(indexable) 45
- 49: 36(int) Load 48
- Store 38(u64) 49
+ 20(i64): 19(ptr) Variable Function
+ 37(indexable): 36(ptr) Variable Function
+ 41(u64): 40(ptr) Variable Function
+ 49(indexable): 48(ptr) Variable Function
+ 34: 33(ptr) AccessChain 30 32
+ 35: 21(int) Load 34
+ Store 37(indexable) 27
+ 38: 19(ptr) AccessChain 37(indexable) 35
+ 39: 18(int) Load 38
+ Store 20(i64) 39
+ 46: 33(ptr) AccessChain 30 32
+ 47: 21(int) Load 46
+ Store 49(indexable) 45
+ 50: 40(ptr) AccessChain 49(indexable) 47
+ 51: 14(int) Load 50
+ Store 41(u64) 51
Return
FunctionEnd
8(typeCast(): 2 Function None 3
9: Label
- 52(i64v): 51(ptr) Variable Function
- 56(bv): 55(ptr) Variable Function
- 65(u64v): 64(ptr) Variable Function
- 74(iv): 73(ptr) Variable Function
- 81(uv): 80(ptr) Variable Function
- 89(fv): 88(ptr) Variable Function
- 95(dv): 94(ptr) Variable Function
- 57: 54(bvec2) Load 56(bv)
- 62: 50(ivec2) Select 57 61 60
- Store 52(i64v) 62
- 66: 54(bvec2) Load 56(bv)
- 71: 63(ivec2) Select 66 70 69
- Store 65(u64v) 71
- 75: 72(ivec2) Load 74(iv)
- 76: 50(ivec2) SConvert 75
- Store 52(i64v) 76
- 77: 50(ivec2) Load 52(i64v)
- 78: 72(ivec2) SConvert 77
- Store 74(iv) 78
- 82: 79(ivec2) Load 81(uv)
- 83: 63(ivec2) UConvert 82
- Store 65(u64v) 83
- 84: 63(ivec2) Load 65(u64v)
- 85: 79(ivec2) UConvert 84
- Store 81(uv) 85
- 90: 50(ivec2) Load 52(i64v)
- 91: 87(fvec2) ConvertSToF 90
- Store 89(fv) 91
- 96: 50(ivec2) Load 52(i64v)
- 97: 93(fvec2) ConvertSToF 96
- Store 95(dv) 97
- 98: 63(ivec2) Load 65(u64v)
- 99: 87(fvec2) ConvertUToF 98
- Store 89(fv) 99
- 100: 63(ivec2) Load 65(u64v)
- 101: 93(fvec2) ConvertUToF 100
- Store 95(dv) 101
- 102: 87(fvec2) Load 89(fv)
- 103: 50(ivec2) ConvertFToS 102
- Store 52(i64v) 103
- 104: 93(fvec2) Load 95(dv)
- 105: 50(ivec2) ConvertFToS 104
- Store 52(i64v) 105
- 106: 87(fvec2) Load 89(fv)
- 107: 63(ivec2) ConvertFToU 106
- Store 65(u64v) 107
- 108: 93(fvec2) Load 95(dv)
- 109: 63(ivec2) ConvertFToU 108
- Store 65(u64v) 109
- 110: 50(ivec2) Load 52(i64v)
- 111: 54(bvec2) INotEqual 110 69
- Store 56(bv) 111
- 112: 63(ivec2) Load 65(u64v)
- 113: 54(bvec2) INotEqual 112 69
- Store 56(bv) 113
- 114: 50(ivec2) Load 52(i64v)
- 115: 63(ivec2) Bitcast 114
- Store 65(u64v) 115
- 116: 63(ivec2) Load 65(u64v)
- 117: 50(ivec2) Bitcast 116
- Store 52(i64v) 117
- 118: 50(ivec2) Load 52(i64v)
- 119: 72(ivec2) SConvert 118
- 120: 79(ivec2) Bitcast 119
- Store 81(uv) 120
- 121: 79(ivec2) Load 81(uv)
- 122: 63(ivec2) UConvert 121
- 123: 50(ivec2) Bitcast 122
- Store 52(i64v) 123
- 124: 63(ivec2) Load 65(u64v)
- 125: 79(ivec2) UConvert 124
- 126: 72(ivec2) Bitcast 125
- Store 74(iv) 126
- 127: 72(ivec2) Load 74(iv)
- 128: 50(ivec2) SConvert 127
- 129: 63(ivec2) Bitcast 128
- Store 65(u64v) 129
+ 54(i64v): 53(ptr) Variable Function
+ 58(bv): 57(ptr) Variable Function
+ 67(u64v): 66(ptr) Variable Function
+ 76(iv): 75(ptr) Variable Function
+ 83(uv): 82(ptr) Variable Function
+ 91(fv): 90(ptr) Variable Function
+ 97(dv): 96(ptr) Variable Function
+ 59: 56(bvec2) Load 58(bv)
+ 64: 52(ivec2) Select 59 63 62
+ Store 54(i64v) 64
+ 68: 56(bvec2) Load 58(bv)
+ 73: 65(ivec2) Select 68 72 71
+ Store 67(u64v) 73
+ 77: 74(ivec2) Load 76(iv)
+ 78: 52(ivec2) SConvert 77
+ Store 54(i64v) 78
+ 79: 52(ivec2) Load 54(i64v)
+ 80: 74(ivec2) SConvert 79
+ Store 76(iv) 80
+ 84: 81(ivec2) Load 83(uv)
+ 85: 65(ivec2) UConvert 84
+ Store 67(u64v) 85
+ 86: 65(ivec2) Load 67(u64v)
+ 87: 81(ivec2) UConvert 86
+ Store 83(uv) 87
+ 92: 52(ivec2) Load 54(i64v)
+ 93: 89(fvec2) ConvertSToF 92
+ Store 91(fv) 93
+ 98: 52(ivec2) Load 54(i64v)
+ 99: 95(fvec2) ConvertSToF 98
+ Store 97(dv) 99
+ 100: 65(ivec2) Load 67(u64v)
+ 101: 89(fvec2) ConvertUToF 100
+ Store 91(fv) 101
+ 102: 65(ivec2) Load 67(u64v)
+ 103: 95(fvec2) ConvertUToF 102
+ Store 97(dv) 103
+ 104: 89(fvec2) Load 91(fv)
+ 105: 52(ivec2) ConvertFToS 104
+ Store 54(i64v) 105
+ 106: 95(fvec2) Load 97(dv)
+ 107: 52(ivec2) ConvertFToS 106
+ Store 54(i64v) 107
+ 108: 89(fvec2) Load 91(fv)
+ 109: 65(ivec2) ConvertFToU 108
+ Store 67(u64v) 109
+ 110: 95(fvec2) Load 97(dv)
+ 111: 65(ivec2) ConvertFToU 110
+ Store 67(u64v) 111
+ 112: 52(ivec2) Load 54(i64v)
+ 113: 56(bvec2) INotEqual 112 71
+ Store 58(bv) 113
+ 114: 65(ivec2) Load 67(u64v)
+ 115: 56(bvec2) INotEqual 114 71
+ Store 58(bv) 115
+ 116: 52(ivec2) Load 54(i64v)
+ 117: 65(ivec2) Bitcast 116
+ Store 67(u64v) 117
+ 118: 65(ivec2) Load 67(u64v)
+ 119: 52(ivec2) Bitcast 118
+ Store 54(i64v) 119
+ 120: 52(ivec2) Load 54(i64v)
+ 121: 74(ivec2) SConvert 120
+ 122: 81(ivec2) Bitcast 121
+ Store 83(uv) 122
+ 123: 81(ivec2) Load 83(uv)
+ 124: 65(ivec2) UConvert 123
+ 125: 52(ivec2) Bitcast 124
+ Store 54(i64v) 125
+ 126: 65(ivec2) Load 67(u64v)
+ 127: 81(ivec2) UConvert 126
+ 128: 74(ivec2) Bitcast 127
+ Store 76(iv) 128
+ 129: 74(ivec2) Load 76(iv)
+ 130: 52(ivec2) SConvert 129
+ 131: 65(ivec2) Bitcast 130
+ Store 67(u64v) 131
Return
FunctionEnd
10(operators(): 2 Function None 3
11: Label
- 132(u64v): 131(ptr) Variable Function
- 137(i64): 15(ptr) Variable Function
- 157(i): 156(ptr) Variable Function
- 164(uv): 163(ptr) Variable Function
- 216(b): 215(ptr) Variable Function
- 133: 130(ivec3) Load 132(u64v)
- 135: 134(ivec3) CompositeConstruct 59 59 59
- 136: 130(ivec3) IAdd 133 135
- Store 132(u64v) 136
- 138: 14(int) Load 137(i64)
- 139: 14(int) ISub 138 59
- Store 137(i64) 139
- 140: 14(int) Load 137(i64)
- 141: 14(int) IAdd 140 59
- Store 137(i64) 141
- 142: 130(ivec3) Load 132(u64v)
- 143: 134(ivec3) CompositeConstruct 59 59 59
- 144: 130(ivec3) ISub 142 143
- Store 132(u64v) 144
- 145: 130(ivec3) Load 132(u64v)
- 146: 130(ivec3) Not 145
- Store 132(u64v) 146
- 147: 14(int) Load 137(i64)
- Store 137(i64) 147
- 148: 130(ivec3) Load 132(u64v)
- 149: 130(ivec3) SNegate 148
- Store 132(u64v) 149
- 150: 14(int) Load 137(i64)
- 151: 14(int) Load 137(i64)
- 152: 14(int) IAdd 151 150
- Store 137(i64) 152
- 153: 130(ivec3) Load 132(u64v)
- 154: 130(ivec3) Load 132(u64v)
- 155: 130(ivec3) ISub 154 153
- Store 132(u64v) 155
- 158: 27(int) Load 157(i)
- 159: 14(int) SConvert 158
- 160: 14(int) Load 137(i64)
- 161: 14(int) IMul 160 159
- Store 137(i64) 161
- 165: 162(ivec3) Load 164(uv)
- 166: 130(ivec3) UConvert 165
- 167: 130(ivec3) Load 132(u64v)
- 168: 130(ivec3) UDiv 167 166
- Store 132(u64v) 168
- 169: 27(int) Load 157(i)
- 170: 14(int) SConvert 169
- 171: 36(int) Bitcast 170
- 172: 130(ivec3) Load 132(u64v)
- 173: 130(ivec3) CompositeConstruct 171 171 171
- 174: 130(ivec3) UMod 172 173
- Store 132(u64v) 174
- 175: 130(ivec3) Load 132(u64v)
- 176: 162(ivec3) Load 164(uv)
- 177: 130(ivec3) UConvert 176
- 178: 130(ivec3) IAdd 175 177
- Store 132(u64v) 178
- 179: 14(int) Load 137(i64)
- 180: 27(int) Load 157(i)
- 181: 14(int) SConvert 180
- 182: 14(int) ISub 179 181
- Store 137(i64) 182
- 183: 130(ivec3) Load 132(u64v)
- 184: 162(ivec3) Load 164(uv)
- 185: 130(ivec3) UConvert 184
- 186: 130(ivec3) IMul 183 185
- Store 132(u64v) 186
- 187: 14(int) Load 137(i64)
- 188: 27(int) Load 157(i)
- 189: 14(int) SConvert 188
- 190: 14(int) IMul 187 189
- Store 137(i64) 190
- 191: 14(int) Load 137(i64)
- 192: 27(int) Load 157(i)
- 193: 14(int) SConvert 192
- 194: 14(int) SMod 191 193
- Store 137(i64) 194
- 195: 27(int) Load 157(i)
- 196: 130(ivec3) Load 132(u64v)
- 198: 197(ivec3) CompositeConstruct 195 195 195
- 199: 130(ivec3) ShiftLeftLogical 196 198
- Store 132(u64v) 199
- 202: 201(ptr) AccessChain 164(uv) 200
- 203: 17(int) Load 202
- 204: 14(int) Load 137(i64)
- 205: 14(int) ShiftRightArithmetic 204 203
- Store 137(i64) 205
- 206: 14(int) Load 137(i64)
- 208: 37(ptr) AccessChain 132(u64v) 207
- 209: 36(int) Load 208
- 210: 14(int) ShiftLeftLogical 206 209
- Store 137(i64) 210
- 211: 130(ivec3) Load 132(u64v)
- 212: 14(int) Load 137(i64)
- 213: 134(ivec3) CompositeConstruct 212 212 212
- 214: 130(ivec3) ShiftLeftLogical 211 213
- Store 132(u64v) 214
- 218: 37(ptr) AccessChain 132(u64v) 217
- 219: 36(int) Load 218
- 220: 14(int) Load 137(i64)
- 221: 36(int) Bitcast 220
- 222: 53(bool) INotEqual 219 221
- Store 216(b) 222
- 223: 14(int) Load 137(i64)
- 224: 36(int) Bitcast 223
- 225: 37(ptr) AccessChain 132(u64v) 217
- 226: 36(int) Load 225
- 227: 53(bool) IEqual 224 226
- Store 216(b) 227
- 228: 37(ptr) AccessChain 132(u64v) 217
- 229: 36(int) Load 228
- 230: 201(ptr) AccessChain 164(uv) 200
- 231: 17(int) Load 230
- 232: 36(int) UConvert 231
- 233: 53(bool) UGreaterThan 229 232
- Store 216(b) 233
- 234: 14(int) Load 137(i64)
- 235: 27(int) Load 157(i)
- 236: 14(int) SConvert 235
- 237: 53(bool) SLessThan 234 236
- Store 216(b) 237
- 238: 37(ptr) AccessChain 132(u64v) 200
- 239: 36(int) Load 238
- 240: 201(ptr) AccessChain 164(uv) 217
- 241: 17(int) Load 240
- 242: 36(int) UConvert 241
- 243: 53(bool) UGreaterThanEqual 239 242
- Store 216(b) 243
- 244: 14(int) Load 137(i64)
- 245: 27(int) Load 157(i)
- 246: 14(int) SConvert 245
- 247: 53(bool) SLessThanEqual 244 246
- Store 216(b) 247
- 248: 27(int) Load 157(i)
- 249: 14(int) SConvert 248
- 250: 36(int) Bitcast 249
- 251: 130(ivec3) Load 132(u64v)
- 252: 130(ivec3) CompositeConstruct 250 250 250
- 253: 130(ivec3) BitwiseOr 251 252
- Store 132(u64v) 253
- 254: 14(int) Load 137(i64)
- 255: 27(int) Load 157(i)
- 256: 14(int) SConvert 255
- 257: 14(int) BitwiseOr 254 256
- Store 137(i64) 257
- 258: 27(int) Load 157(i)
- 259: 14(int) SConvert 258
- 260: 14(int) Load 137(i64)
- 261: 14(int) BitwiseAnd 260 259
- Store 137(i64) 261
- 262: 130(ivec3) Load 132(u64v)
- 263: 162(ivec3) Load 164(uv)
- 264: 130(ivec3) UConvert 263
- 265: 130(ivec3) BitwiseAnd 262 264
- Store 132(u64v) 265
- 266: 14(int) Load 137(i64)
- 267: 36(int) Bitcast 266
- 268: 130(ivec3) Load 132(u64v)
- 269: 130(ivec3) CompositeConstruct 267 267 267
- 270: 130(ivec3) BitwiseXor 268 269
- Store 132(u64v) 270
- 271: 130(ivec3) Load 132(u64v)
- 272: 14(int) Load 137(i64)
- 273: 36(int) Bitcast 272
- 274: 130(ivec3) CompositeConstruct 273 273 273
- 275: 130(ivec3) BitwiseXor 271 274
- Store 132(u64v) 275
+ 134(u64v): 133(ptr) Variable Function
+ 139(i64): 19(ptr) Variable Function
+ 159(i): 158(ptr) Variable Function
+ 166(uv): 165(ptr) Variable Function
+ 218(b): 217(ptr) Variable Function
+ 135: 132(ivec3) Load 134(u64v)
+ 137: 136(ivec3) CompositeConstruct 61 61 61
+ 138: 132(ivec3) IAdd 135 137
+ Store 134(u64v) 138
+ 140: 18(int) Load 139(i64)
+ 141: 18(int) ISub 140 61
+ Store 139(i64) 141
+ 142: 18(int) Load 139(i64)
+ 143: 18(int) IAdd 142 61
+ Store 139(i64) 143
+ 144: 132(ivec3) Load 134(u64v)
+ 145: 136(ivec3) CompositeConstruct 61 61 61
+ 146: 132(ivec3) ISub 144 145
+ Store 134(u64v) 146
+ 147: 132(ivec3) Load 134(u64v)
+ 148: 132(ivec3) Not 147
+ Store 134(u64v) 148
+ 149: 18(int) Load 139(i64)
+ Store 139(i64) 149
+ 150: 132(ivec3) Load 134(u64v)
+ 151: 132(ivec3) SNegate 150
+ Store 134(u64v) 151
+ 152: 18(int) Load 139(i64)
+ 153: 18(int) Load 139(i64)
+ 154: 18(int) IAdd 153 152
+ Store 139(i64) 154
+ 155: 132(ivec3) Load 134(u64v)
+ 156: 132(ivec3) Load 134(u64v)
+ 157: 132(ivec3) ISub 156 155
+ Store 134(u64v) 157
+ 160: 31(int) Load 159(i)
+ 161: 18(int) SConvert 160
+ 162: 18(int) Load 139(i64)
+ 163: 18(int) IMul 162 161
+ Store 139(i64) 163
+ 167: 164(ivec3) Load 166(uv)
+ 168: 132(ivec3) UConvert 167
+ 169: 132(ivec3) Load 134(u64v)
+ 170: 132(ivec3) UDiv 169 168
+ Store 134(u64v) 170
+ 171: 31(int) Load 159(i)
+ 172: 18(int) SConvert 171
+ 173: 14(int) Bitcast 172
+ 174: 132(ivec3) Load 134(u64v)
+ 175: 132(ivec3) CompositeConstruct 173 173 173
+ 176: 132(ivec3) UMod 174 175
+ Store 134(u64v) 176
+ 177: 132(ivec3) Load 134(u64v)
+ 178: 164(ivec3) Load 166(uv)
+ 179: 132(ivec3) UConvert 178
+ 180: 132(ivec3) IAdd 177 179
+ Store 134(u64v) 180
+ 181: 18(int) Load 139(i64)
+ 182: 31(int) Load 159(i)
+ 183: 18(int) SConvert 182
+ 184: 18(int) ISub 181 183
+ Store 139(i64) 184
+ 185: 132(ivec3) Load 134(u64v)
+ 186: 164(ivec3) Load 166(uv)
+ 187: 132(ivec3) UConvert 186
+ 188: 132(ivec3) IMul 185 187
+ Store 134(u64v) 188
+ 189: 18(int) Load 139(i64)
+ 190: 31(int) Load 159(i)
+ 191: 18(int) SConvert 190
+ 192: 18(int) IMul 189 191
+ Store 139(i64) 192
+ 193: 18(int) Load 139(i64)
+ 194: 31(int) Load 159(i)
+ 195: 18(int) SConvert 194
+ 196: 18(int) SMod 193 195
+ Store 139(i64) 196
+ 197: 31(int) Load 159(i)
+ 198: 132(ivec3) Load 134(u64v)
+ 200: 199(ivec3) CompositeConstruct 197 197 197
+ 201: 132(ivec3) ShiftLeftLogical 198 200
+ Store 134(u64v) 201
+ 204: 203(ptr) AccessChain 166(uv) 202
+ 205: 21(int) Load 204
+ 206: 18(int) Load 139(i64)
+ 207: 18(int) ShiftRightArithmetic 206 205
+ Store 139(i64) 207
+ 208: 18(int) Load 139(i64)
+ 210: 40(ptr) AccessChain 134(u64v) 209
+ 211: 14(int) Load 210
+ 212: 18(int) ShiftLeftLogical 208 211
+ Store 139(i64) 212
+ 213: 132(ivec3) Load 134(u64v)
+ 214: 18(int) Load 139(i64)
+ 215: 136(ivec3) CompositeConstruct 214 214 214
+ 216: 132(ivec3) ShiftLeftLogical 213 215
+ Store 134(u64v) 216
+ 220: 40(ptr) AccessChain 134(u64v) 219
+ 221: 14(int) Load 220
+ 222: 18(int) Load 139(i64)
+ 223: 14(int) Bitcast 222
+ 224: 55(bool) INotEqual 221 223
+ Store 218(b) 224
+ 225: 18(int) Load 139(i64)
+ 226: 14(int) Bitcast 225
+ 227: 40(ptr) AccessChain 134(u64v) 219
+ 228: 14(int) Load 227
+ 229: 55(bool) IEqual 226 228
+ Store 218(b) 229
+ 230: 40(ptr) AccessChain 134(u64v) 219
+ 231: 14(int) Load 230
+ 232: 203(ptr) AccessChain 166(uv) 202
+ 233: 21(int) Load 232
+ 234: 14(int) UConvert 233
+ 235: 55(bool) UGreaterThan 231 234
+ Store 218(b) 235
+ 236: 18(int) Load 139(i64)
+ 237: 31(int) Load 159(i)
+ 238: 18(int) SConvert 237
+ 239: 55(bool) SLessThan 236 238
+ Store 218(b) 239
+ 240: 40(ptr) AccessChain 134(u64v) 202
+ 241: 14(int) Load 240
+ 242: 203(ptr) AccessChain 166(uv) 219
+ 243: 21(int) Load 242
+ 244: 14(int) UConvert 243
+ 245: 55(bool) UGreaterThanEqual 241 244
+ Store 218(b) 245
+ 246: 18(int) Load 139(i64)
+ 247: 31(int) Load 159(i)
+ 248: 18(int) SConvert 247
+ 249: 55(bool) SLessThanEqual 246 248
+ Store 218(b) 249
+ 250: 31(int) Load 159(i)
+ 251: 18(int) SConvert 250
+ 252: 14(int) Bitcast 251
+ 253: 132(ivec3) Load 134(u64v)
+ 254: 132(ivec3) CompositeConstruct 252 252 252
+ 255: 132(ivec3) BitwiseOr 253 254
+ Store 134(u64v) 255
+ 256: 18(int) Load 139(i64)
+ 257: 31(int) Load 159(i)
+ 258: 18(int) SConvert 257
+ 259: 18(int) BitwiseOr 256 258
+ Store 139(i64) 259
+ 260: 31(int) Load 159(i)
+ 261: 18(int) SConvert 260
+ 262: 18(int) Load 139(i64)
+ 263: 18(int) BitwiseAnd 262 261
+ Store 139(i64) 263
+ 264: 132(ivec3) Load 134(u64v)
+ 265: 164(ivec3) Load 166(uv)
+ 266: 132(ivec3) UConvert 265
+ 267: 132(ivec3) BitwiseAnd 264 266
+ Store 134(u64v) 267
+ 268: 18(int) Load 139(i64)
+ 269: 14(int) Bitcast 268
+ 270: 132(ivec3) Load 134(u64v)
+ 271: 132(ivec3) CompositeConstruct 269 269 269
+ 272: 132(ivec3) BitwiseXor 270 271
+ Store 134(u64v) 272
+ 273: 132(ivec3) Load 134(u64v)
+ 274: 18(int) Load 139(i64)
+ 275: 14(int) Bitcast 274
+ 276: 132(ivec3) CompositeConstruct 275 275 275
+ 277: 132(ivec3) BitwiseXor 273 276
+ Store 134(u64v) 277
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
- 276(i64v): 51(ptr) Variable Function
- 279(i64): 15(ptr) Variable Function
- 289(u64v): 131(ptr) Variable Function
- 291(u64): 37(ptr) Variable Function
- 363(dv): 362(ptr) Variable Function
- 382(iv): 73(ptr) Variable Function
- 387(uv): 80(ptr) Variable Function
- 391(bv): 390(ptr) Variable Function
- 277: 50(ivec2) Load 276(i64v)
- 278: 50(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 277
- Store 276(i64v) 278
- 280: 14(int) Load 279(i64)
- 281: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 280
- Store 279(i64) 281
- 282: 50(ivec2) Load 276(i64v)
- 283: 14(int) Load 279(i64)
- 284: 50(ivec2) CompositeConstruct 283 283
- 285: 50(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 282 284
- Store 276(i64v) 285
- 286: 50(ivec2) Load 276(i64v)
- 288: 50(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 286 287
- Store 276(i64v) 288
- 290: 130(ivec3) Load 289(u64v)
- 292: 36(int) Load 291(u64)
- 293: 130(ivec3) CompositeConstruct 292 292 292
- 294: 130(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 290 293
- Store 289(u64v) 294
- 295: 130(ivec3) Load 289(u64v)
- 297: 130(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 296
- Store 289(u64v) 297
- 298: 50(ivec2) Load 276(i64v)
- 299: 14(int) Load 279(i64)
- 300: 50(ivec2) CompositeConstruct 299 299
- 301: 50(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 298 300
- Store 276(i64v) 301
- 302: 50(ivec2) Load 276(i64v)
- 303: 50(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 302 287
- Store 276(i64v) 303
- 304: 130(ivec3) Load 289(u64v)
- 305: 36(int) Load 291(u64)
- 306: 130(ivec3) CompositeConstruct 305 305 305
- 307: 130(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 304 306
- Store 289(u64v) 307
- 308: 130(ivec3) Load 289(u64v)
- 309: 130(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 308 296
- Store 289(u64v) 309
- 310: 50(ivec2) Load 276(i64v)
- 311: 14(int) Load 279(i64)
- 312: 14(int) SNegate 311
- 313: 14(int) Load 279(i64)
- 314: 50(ivec2) CompositeConstruct 312 312
- 315: 50(ivec2) CompositeConstruct 313 313
- 316: 50(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 310 314 315
- Store 276(i64v) 316
- 317: 50(ivec2) Load 276(i64v)
- 318: 50(ivec2) Load 276(i64v)
- 319: 50(ivec2) SNegate 318
- 320: 50(ivec2) Load 276(i64v)
- 321: 50(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 317 319 320
- Store 276(i64v) 321
- 322: 130(ivec3) Load 289(u64v)
- 323: 36(int) Load 291(u64)
- 324: 36(int) SNegate 323
- 325: 36(int) Load 291(u64)
- 326: 130(ivec3) CompositeConstruct 324 324 324
- 327: 130(ivec3) CompositeConstruct 325 325 325
- 328: 130(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 322 326 327
- Store 289(u64v) 328
- 329: 130(ivec3) Load 289(u64v)
- 330: 130(ivec3) Load 289(u64v)
- 331: 130(ivec3) SNegate 330
- 332: 130(ivec3) Load 289(u64v)
- 333: 130(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 329 331 332
- Store 289(u64v) 333
- 334: 15(ptr) AccessChain 276(i64v) 217
- 335: 14(int) Load 334
- 336: 15(ptr) AccessChain 276(i64v) 200
- 337: 14(int) Load 336
- 339: 14(int) Select 338 337 335
- Store 279(i64) 339
- 340: 14(int) Load 279(i64)
- 341: 50(ivec2) CompositeConstruct 340 340
- 342: 14(int) Load 279(i64)
- 343: 14(int) SNegate 342
- 344: 50(ivec2) CompositeConstruct 343 343
- 347: 50(ivec2) Select 346 344 341
- Store 276(i64v) 347
- 348: 37(ptr) AccessChain 289(u64v) 217
- 349: 36(int) Load 348
- 350: 37(ptr) AccessChain 289(u64v) 200
- 351: 36(int) Load 350
- 352: 36(int) Select 338 351 349
- Store 291(u64) 352
- 353: 36(int) Load 291(u64)
- 354: 130(ivec3) CompositeConstruct 353 353 353
- 355: 36(int) Load 291(u64)
- 356: 36(int) SNegate 355
- 357: 130(ivec3) CompositeConstruct 356 356 356
- 360: 130(ivec3) Select 359 357 354
- Store 289(u64v) 360
- 364: 361(fvec3) Load 363(dv)
- 365: 93(fvec2) VectorShuffle 364 364 0 1
- 366: 50(ivec2) Bitcast 365
- Store 276(i64v) 366
- 368: 367(ptr) AccessChain 363(dv) 207
- 369: 92(float) Load 368
- 370: 36(int) Bitcast 369
- 371: 37(ptr) AccessChain 289(u64v) 217
- Store 371 370
- 372: 50(ivec2) Load 276(i64v)
- 373: 93(fvec2) Bitcast 372
- 374: 361(fvec3) Load 363(dv)
- 375: 361(fvec3) VectorShuffle 374 373 3 4 2
- Store 363(dv) 375
- 376: 130(ivec3) Load 289(u64v)
- 377: 361(fvec3) Bitcast 376
- Store 363(dv) 377
- 381: 14(int) ExtInst 1(GLSL.std.450) 0(Unknown) 380
- Store 279(i64) 381
- 383: 14(int) Load 279(i64)
- 384: 72(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 383
- Store 382(iv) 384
- 386: 36(int) ExtInst 1(GLSL.std.450) 0(Unknown) 385
- Store 291(u64) 386
- 388: 36(int) Load 291(u64)
- 389: 79(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 388
- Store 387(uv) 389
- 392: 130(ivec3) Load 289(u64v)
- 393: 36(int) Load 291(u64)
- 394: 130(ivec3) CompositeConstruct 393 393 393
- 395: 358(bvec3) ULessThan 392 394
- Store 391(bv) 395
- 396: 50(ivec2) Load 276(i64v)
- 397: 14(int) Load 279(i64)
- 398: 50(ivec2) CompositeConstruct 397 397
- 399: 54(bvec2) SLessThan 396 398
- 400: 358(bvec3) Load 391(bv)
- 401: 358(bvec3) VectorShuffle 400 399 3 4 2
- Store 391(bv) 401
- 402: 130(ivec3) Load 289(u64v)
- 403: 36(int) Load 291(u64)
- 404: 130(ivec3) CompositeConstruct 403 403 403
- 405: 358(bvec3) ULessThanEqual 402 404
- Store 391(bv) 405
- 406: 50(ivec2) Load 276(i64v)
- 407: 14(int) Load 279(i64)
- 408: 50(ivec2) CompositeConstruct 407 407
- 409: 54(bvec2) SLessThanEqual 406 408
- 410: 358(bvec3) Load 391(bv)
- 411: 358(bvec3) VectorShuffle 410 409 3 4 2
- Store 391(bv) 411
- 412: 130(ivec3) Load 289(u64v)
- 413: 36(int) Load 291(u64)
- 414: 130(ivec3) CompositeConstruct 413 413 413
- 415: 358(bvec3) UGreaterThan 412 414
- Store 391(bv) 415
- 416: 50(ivec2) Load 276(i64v)
- 417: 14(int) Load 279(i64)
- 418: 50(ivec2) CompositeConstruct 417 417
- 419: 54(bvec2) SGreaterThan 416 418
- 420: 358(bvec3) Load 391(bv)
- 421: 358(bvec3) VectorShuffle 420 419 3 4 2
- Store 391(bv) 421
- 422: 130(ivec3) Load 289(u64v)
- 423: 36(int) Load 291(u64)
- 424: 130(ivec3) CompositeConstruct 423 423 423
- 425: 358(bvec3) UGreaterThanEqual 422 424
- Store 391(bv) 425
- 426: 50(ivec2) Load 276(i64v)
- 427: 14(int) Load 279(i64)
- 428: 50(ivec2) CompositeConstruct 427 427
- 429: 54(bvec2) SGreaterThanEqual 426 428
- 430: 358(bvec3) Load 391(bv)
- 431: 358(bvec3) VectorShuffle 430 429 3 4 2
- Store 391(bv) 431
- 432: 130(ivec3) Load 289(u64v)
- 433: 36(int) Load 291(u64)
- 434: 130(ivec3) CompositeConstruct 433 433 433
- 435: 358(bvec3) IEqual 432 434
- Store 391(bv) 435
- 436: 50(ivec2) Load 276(i64v)
- 437: 14(int) Load 279(i64)
- 438: 50(ivec2) CompositeConstruct 437 437
- 439: 54(bvec2) IEqual 436 438
- 440: 358(bvec3) Load 391(bv)
- 441: 358(bvec3) VectorShuffle 440 439 3 4 2
- Store 391(bv) 441
- 442: 130(ivec3) Load 289(u64v)
- 443: 36(int) Load 291(u64)
- 444: 130(ivec3) CompositeConstruct 443 443 443
- 445: 358(bvec3) INotEqual 442 444
- Store 391(bv) 445
- 446: 50(ivec2) Load 276(i64v)
- 447: 14(int) Load 279(i64)
- 448: 50(ivec2) CompositeConstruct 447 447
- 449: 54(bvec2) INotEqual 446 448
- 450: 358(bvec3) Load 391(bv)
- 451: 358(bvec3) VectorShuffle 450 449 3 4 2
- Store 391(bv) 451
+ 278(i64v): 53(ptr) Variable Function
+ 281(i64): 19(ptr) Variable Function
+ 291(u64v): 133(ptr) Variable Function
+ 293(u64): 40(ptr) Variable Function
+ 365(dv): 364(ptr) Variable Function
+ 384(iv): 75(ptr) Variable Function
+ 389(uv): 82(ptr) Variable Function
+ 393(bv): 392(ptr) Variable Function
+ 279: 52(ivec2) Load 278(i64v)
+ 280: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 279
+ Store 278(i64v) 280
+ 282: 18(int) Load 281(i64)
+ 283: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 282
+ Store 281(i64) 283
+ 284: 52(ivec2) Load 278(i64v)
+ 285: 18(int) Load 281(i64)
+ 286: 52(ivec2) CompositeConstruct 285 285
+ 287: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 284 286
+ Store 278(i64v) 287
+ 288: 52(ivec2) Load 278(i64v)
+ 290: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 288 289
+ Store 278(i64v) 290
+ 292: 132(ivec3) Load 291(u64v)
+ 294: 14(int) Load 293(u64)
+ 295: 132(ivec3) CompositeConstruct 294 294 294
+ 296: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 292 295
+ Store 291(u64v) 296
+ 297: 132(ivec3) Load 291(u64v)
+ 299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 297 298
+ Store 291(u64v) 299
+ 300: 52(ivec2) Load 278(i64v)
+ 301: 18(int) Load 281(i64)
+ 302: 52(ivec2) CompositeConstruct 301 301
+ 303: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 300 302
+ Store 278(i64v) 303
+ 304: 52(ivec2) Load 278(i64v)
+ 305: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 304 289
+ Store 278(i64v) 305
+ 306: 132(ivec3) Load 291(u64v)
+ 307: 14(int) Load 293(u64)
+ 308: 132(ivec3) CompositeConstruct 307 307 307
+ 309: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 306 308
+ Store 291(u64v) 309
+ 310: 132(ivec3) Load 291(u64v)
+ 311: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 310 298
+ Store 291(u64v) 311
+ 312: 52(ivec2) Load 278(i64v)
+ 313: 18(int) Load 281(i64)
+ 314: 18(int) SNegate 313
+ 315: 18(int) Load 281(i64)
+ 316: 52(ivec2) CompositeConstruct 314 314
+ 317: 52(ivec2) CompositeConstruct 315 315
+ 318: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 312 316 317
+ Store 278(i64v) 318
+ 319: 52(ivec2) Load 278(i64v)
+ 320: 52(ivec2) Load 278(i64v)
+ 321: 52(ivec2) SNegate 320
+ 322: 52(ivec2) Load 278(i64v)
+ 323: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 319 321 322
+ Store 278(i64v) 323
+ 324: 132(ivec3) Load 291(u64v)
+ 325: 14(int) Load 293(u64)
+ 326: 14(int) SNegate 325
+ 327: 14(int) Load 293(u64)
+ 328: 132(ivec3) CompositeConstruct 326 326 326
+ 329: 132(ivec3) CompositeConstruct 327 327 327
+ 330: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 324 328 329
+ Store 291(u64v) 330
+ 331: 132(ivec3) Load 291(u64v)
+ 332: 132(ivec3) Load 291(u64v)
+ 333: 132(ivec3) SNegate 332
+ 334: 132(ivec3) Load 291(u64v)
+ 335: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 331 333 334
+ Store 291(u64v) 335
+ 336: 19(ptr) AccessChain 278(i64v) 219
+ 337: 18(int) Load 336
+ 338: 19(ptr) AccessChain 278(i64v) 202
+ 339: 18(int) Load 338
+ 341: 18(int) Select 340 339 337
+ Store 281(i64) 341
+ 342: 18(int) Load 281(i64)
+ 343: 52(ivec2) CompositeConstruct 342 342
+ 344: 18(int) Load 281(i64)
+ 345: 18(int) SNegate 344
+ 346: 52(ivec2) CompositeConstruct 345 345
+ 349: 52(ivec2) Select 348 346 343
+ Store 278(i64v) 349
+ 350: 40(ptr) AccessChain 291(u64v) 219
+ 351: 14(int) Load 350
+ 352: 40(ptr) AccessChain 291(u64v) 202
+ 353: 14(int) Load 352
+ 354: 14(int) Select 340 353 351
+ Store 293(u64) 354
+ 355: 14(int) Load 293(u64)
+ 356: 132(ivec3) CompositeConstruct 355 355 355
+ 357: 14(int) Load 293(u64)
+ 358: 14(int) SNegate 357
+ 359: 132(ivec3) CompositeConstruct 358 358 358
+ 362: 132(ivec3) Select 361 359 356
+ Store 291(u64v) 362
+ 366: 363(fvec3) Load 365(dv)
+ 367: 95(fvec2) VectorShuffle 366 366 0 1
+ 368: 52(ivec2) Bitcast 367
+ Store 278(i64v) 368
+ 370: 369(ptr) AccessChain 365(dv) 209
+ 371: 94(float) Load 370
+ 372: 14(int) Bitcast 371
+ 373: 40(ptr) AccessChain 291(u64v) 219
+ Store 373 372
+ 374: 52(ivec2) Load 278(i64v)
+ 375: 95(fvec2) Bitcast 374
+ 376: 363(fvec3) Load 365(dv)
+ 377: 363(fvec3) VectorShuffle 376 375 3 4 2
+ Store 365(dv) 377
+ 378: 132(ivec3) Load 291(u64v)
+ 379: 363(fvec3) Bitcast 378
+ Store 365(dv) 379
+ 383: 18(int) Bitcast 382
+ Store 281(i64) 383
+ 385: 18(int) Load 281(i64)
+ 386: 74(ivec2) Bitcast 385
+ Store 384(iv) 386
+ 388: 14(int) Bitcast 387
+ Store 293(u64) 388
+ 390: 14(int) Load 293(u64)
+ 391: 81(ivec2) Bitcast 390
+ Store 389(uv) 391
+ 394: 132(ivec3) Load 291(u64v)
+ 395: 14(int) Load 293(u64)
+ 396: 132(ivec3) CompositeConstruct 395 395 395
+ 397: 360(bvec3) ULessThan 394 396
+ Store 393(bv) 397
+ 398: 52(ivec2) Load 278(i64v)
+ 399: 18(int) Load 281(i64)
+ 400: 52(ivec2) CompositeConstruct 399 399
+ 401: 56(bvec2) SLessThan 398 400
+ 402: 360(bvec3) Load 393(bv)
+ 403: 360(bvec3) VectorShuffle 402 401 3 4 2
+ Store 393(bv) 403
+ 404: 132(ivec3) Load 291(u64v)
+ 405: 14(int) Load 293(u64)
+ 406: 132(ivec3) CompositeConstruct 405 405 405
+ 407: 360(bvec3) ULessThanEqual 404 406
+ Store 393(bv) 407
+ 408: 52(ivec2) Load 278(i64v)
+ 409: 18(int) Load 281(i64)
+ 410: 52(ivec2) CompositeConstruct 409 409
+ 411: 56(bvec2) SLessThanEqual 408 410
+ 412: 360(bvec3) Load 393(bv)
+ 413: 360(bvec3) VectorShuffle 412 411 3 4 2
+ Store 393(bv) 413
+ 414: 132(ivec3) Load 291(u64v)
+ 415: 14(int) Load 293(u64)
+ 416: 132(ivec3) CompositeConstruct 415 415 415
+ 417: 360(bvec3) UGreaterThan 414 416
+ Store 393(bv) 417
+ 418: 52(ivec2) Load 278(i64v)
+ 419: 18(int) Load 281(i64)
+ 420: 52(ivec2) CompositeConstruct 419 419
+ 421: 56(bvec2) SGreaterThan 418 420
+ 422: 360(bvec3) Load 393(bv)
+ 423: 360(bvec3) VectorShuffle 422 421 3 4 2
+ Store 393(bv) 423
+ 424: 132(ivec3) Load 291(u64v)
+ 425: 14(int) Load 293(u64)
+ 426: 132(ivec3) CompositeConstruct 425 425 425
+ 427: 360(bvec3) UGreaterThanEqual 424 426
+ Store 393(bv) 427
+ 428: 52(ivec2) Load 278(i64v)
+ 429: 18(int) Load 281(i64)
+ 430: 52(ivec2) CompositeConstruct 429 429
+ 431: 56(bvec2) SGreaterThanEqual 428 430
+ 432: 360(bvec3) Load 393(bv)
+ 433: 360(bvec3) VectorShuffle 432 431 3 4 2
+ Store 393(bv) 433
+ 434: 132(ivec3) Load 291(u64v)
+ 435: 14(int) Load 293(u64)
+ 436: 132(ivec3) CompositeConstruct 435 435 435
+ 437: 360(bvec3) IEqual 434 436
+ Store 393(bv) 437
+ 438: 52(ivec2) Load 278(i64v)
+ 439: 18(int) Load 281(i64)
+ 440: 52(ivec2) CompositeConstruct 439 439
+ 441: 56(bvec2) IEqual 438 440
+ 442: 360(bvec3) Load 393(bv)
+ 443: 360(bvec3) VectorShuffle 442 441 3 4 2
+ Store 393(bv) 443
+ 444: 132(ivec3) Load 291(u64v)
+ 445: 14(int) Load 293(u64)
+ 446: 132(ivec3) CompositeConstruct 445 445 445
+ 447: 360(bvec3) INotEqual 444 446
+ Store 393(bv) 447
+ 448: 52(ivec2) Load 278(i64v)
+ 449: 18(int) Load 281(i64)
+ 450: 52(ivec2) CompositeConstruct 449 449
+ 451: 56(bvec2) INotEqual 448 450
+ 452: 360(bvec3) Load 393(bv)
+ 453: 360(bvec3) VectorShuffle 452 451 3 4 2
+ Store 393(bv) 453
Return
FunctionEnd
diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out
index d778fbb..fd785ab 100644
--- a/Test/baseResults/spv.layoutNested.vert.out
+++ b/Test/baseResults/spv.layoutNested.vert.out
@@ -91,13 +91,17 @@
Decorate 13 ArrayStride 32
MemberDecorate 14(S) 0 Offset 0
MemberDecorate 14(S) 1 ColMajor
+ MemberDecorate 14(S) 1 RelaxedPrecision
MemberDecorate 14(S) 1 Offset 16
MemberDecorate 14(S) 1 MatrixStride 16
+ MemberDecorate 14(S) 2 RelaxedPrecision
MemberDecorate 14(S) 2 Offset 144
Decorate 16 ArrayStride 160
Decorate 18 ArrayStride 480
+ MemberDecorate 19(Block140) 0 RelaxedPrecision
MemberDecorate 19(Block140) 0 Offset 0
MemberDecorate 19(Block140) 1 Offset 16
+ MemberDecorate 19(Block140) 2 RelaxedPrecision
MemberDecorate 19(Block140) 2 Offset 976
Decorate 19(Block140) Block
Decorate 21(inst140) DescriptorSet 0
@@ -105,17 +109,23 @@
Decorate 22 ArrayStride 16
MemberDecorate 23(S) 0 Offset 0
MemberDecorate 23(S) 1 ColMajor
+ MemberDecorate 23(S) 1 RelaxedPrecision
MemberDecorate 23(S) 1 Offset 16
MemberDecorate 23(S) 1 MatrixStride 8
+ MemberDecorate 23(S) 2 RelaxedPrecision
MemberDecorate 23(S) 2 Offset 80
Decorate 24 ArrayStride 96
Decorate 25 ArrayStride 288
+ MemberDecorate 26(Block430) 0 RelaxedPrecision
MemberDecorate 26(Block430) 0 Offset 0
MemberDecorate 26(Block430) 1 Offset 16
+ MemberDecorate 26(Block430) 2 RelaxedPrecision
MemberDecorate 26(Block430) 2 Offset 592
Decorate 26(Block430) BufferBlock
Decorate 28(inst430) DescriptorSet 0
Decorate 28(inst430) Binding 1
+ MemberDecorate 29(S) 1 RelaxedPrecision
+ MemberDecorate 29(S) 2 RelaxedPrecision
MemberDecorate 35(T) 0 RowMajor
MemberDecorate 35(T) 0 Offset 0
MemberDecorate 35(T) 0 MatrixStride 16
@@ -164,7 +174,9 @@
Decorate 60(bBtn3) Binding 0
Decorate 62(sout) Flat
MemberDecorate 63(S) 0 Invariant
+ MemberDecorate 63(S) 1 RelaxedPrecision
MemberDecorate 63(S) 1 Invariant
+ MemberDecorate 63(S) 2 RelaxedPrecision
MemberDecorate 63(S) 2 Invariant
Decorate 65(soutinv) Invariant
2: TypeVoid
diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out
new file mode 100755
index 0000000..28402ce
--- /dev/null
+++ b/Test/baseResults/spv.multiStruct.comp.out
@@ -0,0 +1,268 @@
+spv.multiStruct.comp
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked compute stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 157
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint GLCompute 4 "main"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source GLSL 450
+ Name 4 "main"
+ Name 12 "MyStruct"
+ MemberName 12(MyStruct) 0 "foo"
+ MemberName 12(MyStruct) 1 "sb"
+ Name 14 "t"
+ Name 16 "MyStruct"
+ MemberName 16(MyStruct) 0 "foo"
+ MemberName 16(MyStruct) 1 "sb"
+ Name 17 "SSBO0"
+ MemberName 17(SSBO0) 0 "a"
+ Name 19 "inBuf"
+ Name 37 "SSBO1"
+ MemberName 37(SSBO1) 0 "b"
+ Name 39 "outBuf"
+ Name 57 "MyStruct"
+ MemberName 57(MyStruct) 0 "foo"
+ MemberName 57(MyStruct) 1 "sb"
+ Name 58 "UBO"
+ MemberName 58(UBO) 0 "c"
+ Name 60 "uBuf"
+ Name 84 "Nested"
+ MemberName 84(Nested) 0 "f"
+ MemberName 84(Nested) 1 "S"
+ Name 86 "n"
+ Name 88 "Nested"
+ MemberName 88(Nested) 0 "f"
+ MemberName 88(Nested) 1 "S"
+ Name 89 "UBON"
+ MemberName 89(UBON) 0 "N1"
+ Name 91 "uBufN"
+ Name 122 "Nested"
+ MemberName 122(Nested) 0 "f"
+ MemberName 122(Nested) 1 "S"
+ Name 123 "SSBO1N"
+ MemberName 123(SSBO1N) 0 "N2"
+ Name 125 "outBufN"
+ Decorate 15 ArrayStride 8
+ MemberDecorate 16(MyStruct) 0 Offset 0
+ MemberDecorate 16(MyStruct) 1 Offset 16
+ MemberDecorate 17(SSBO0) 0 Offset 0
+ Decorate 17(SSBO0) BufferBlock
+ Decorate 19(inBuf) DescriptorSet 0
+ Decorate 19(inBuf) Binding 0
+ MemberDecorate 37(SSBO1) 0 Offset 0
+ Decorate 37(SSBO1) BufferBlock
+ Decorate 39(outBuf) DescriptorSet 0
+ Decorate 39(outBuf) Binding 1
+ Decorate 56 ArrayStride 16
+ MemberDecorate 57(MyStruct) 0 Offset 0
+ MemberDecorate 57(MyStruct) 1 Offset 32
+ MemberDecorate 58(UBO) 0 Offset 0
+ Decorate 58(UBO) Block
+ Decorate 60(uBuf) DescriptorSet 0
+ Decorate 60(uBuf) Binding 2
+ Decorate 87 ArrayStride 48
+ MemberDecorate 88(Nested) 0 Offset 0
+ MemberDecorate 88(Nested) 1 Offset 16
+ MemberDecorate 89(UBON) 0 Offset 0
+ Decorate 89(UBON) Block
+ Decorate 91(uBufN) DescriptorSet 0
+ Decorate 91(uBufN) Binding 2
+ Decorate 121 ArrayStride 24
+ MemberDecorate 122(Nested) 0 Offset 0
+ MemberDecorate 122(Nested) 1 Offset 8
+ MemberDecorate 123(SSBO1N) 0 Offset 0
+ Decorate 123(SSBO1N) BufferBlock
+ Decorate 125(outBufN) DescriptorSet 0
+ Decorate 125(outBufN) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 2
+ 8: TypeInt 32 0
+ 9: 8(int) Constant 2
+ 10: TypeArray 7(fvec2) 9
+ 11: TypeBool
+ 12(MyStruct): TypeStruct 10 11(bool)
+ 13: TypePointer Function 12(MyStruct)
+ 15: TypeArray 7(fvec2) 9
+ 16(MyStruct): TypeStruct 15 8(int)
+ 17(SSBO0): TypeStruct 16(MyStruct)
+ 18: TypePointer Uniform 17(SSBO0)
+ 19(inBuf): 18(ptr) Variable Uniform
+ 20: TypeInt 32 1
+ 21: 20(int) Constant 0
+ 22: TypePointer Uniform 16(MyStruct)
+ 26: TypePointer Function 10
+ 29: TypePointer Function 7(fvec2)
+ 32: 20(int) Constant 1
+ 35: TypePointer Function 11(bool)
+ 37(SSBO1): TypeStruct 16(MyStruct)
+ 38: TypePointer Uniform 37(SSBO1)
+ 39(outBuf): 38(ptr) Variable Uniform
+ 43: TypePointer Uniform 15
+ 46: TypePointer Uniform 7(fvec2)
+ 51: 8(int) Constant 0
+ 52: 8(int) Constant 1
+ 54: TypePointer Uniform 8(int)
+ 56: TypeArray 7(fvec2) 9
+ 57(MyStruct): TypeStruct 56 8(int)
+ 58(UBO): TypeStruct 57(MyStruct)
+ 59: TypePointer Uniform 58(UBO)
+ 60(uBuf): 59(ptr) Variable Uniform
+ 61: TypePointer Uniform 57(MyStruct)
+ 83: TypeArray 12(MyStruct) 9
+ 84(Nested): TypeStruct 6(float) 83
+ 85: TypePointer Function 84(Nested)
+ 87: TypeArray 57(MyStruct) 9
+ 88(Nested): TypeStruct 6(float) 87
+ 89(UBON): TypeStruct 88(Nested)
+ 90: TypePointer Uniform 89(UBON)
+ 91(uBufN): 90(ptr) Variable Uniform
+ 92: TypePointer Uniform 88(Nested)
+ 96: TypePointer Function 6(float)
+ 99: TypePointer Function 83
+ 121: TypeArray 16(MyStruct) 9
+ 122(Nested): TypeStruct 6(float) 121
+ 123(SSBO1N): TypeStruct 122(Nested)
+ 124: TypePointer Uniform 123(SSBO1N)
+ 125(outBufN): 124(ptr) Variable Uniform
+ 127: TypePointer Uniform 122(Nested)
+ 130: TypePointer Uniform 6(float)
+ 133: TypePointer Uniform 121
+ 4(main): 2 Function None 3
+ 5: Label
+ 14(t): 13(ptr) Variable Function
+ 86(n): 85(ptr) Variable Function
+ 23: 22(ptr) AccessChain 19(inBuf) 21
+ 24:16(MyStruct) Load 23
+ 25: 15 CompositeExtract 24 0
+ 27: 26(ptr) AccessChain 14(t) 21
+ 28: 7(fvec2) CompositeExtract 25 0
+ 30: 29(ptr) AccessChain 27 21
+ Store 30 28
+ 31: 7(fvec2) CompositeExtract 25 1
+ 33: 29(ptr) AccessChain 27 32
+ Store 33 31
+ 34: 8(int) CompositeExtract 24 1
+ 36: 35(ptr) AccessChain 14(t) 32
+ Store 36 34
+ 40:12(MyStruct) Load 14(t)
+ 41: 22(ptr) AccessChain 39(outBuf) 21
+ 42: 10 CompositeExtract 40 0
+ 44: 43(ptr) AccessChain 41 21
+ 45: 7(fvec2) CompositeExtract 42 0
+ 47: 46(ptr) AccessChain 44 21
+ Store 47 45
+ 48: 7(fvec2) CompositeExtract 42 1
+ 49: 46(ptr) AccessChain 44 32
+ Store 49 48
+ 50: 11(bool) CompositeExtract 40 1
+ 53: 8(int) Select 50 52 51
+ 55: 54(ptr) AccessChain 41 32
+ Store 55 53
+ 62: 61(ptr) AccessChain 60(uBuf) 21
+ 63:57(MyStruct) Load 62
+ 64: 56 CompositeExtract 63 0
+ 65: 26(ptr) AccessChain 14(t) 21
+ 66: 7(fvec2) CompositeExtract 64 0
+ 67: 29(ptr) AccessChain 65 21
+ Store 67 66
+ 68: 7(fvec2) CompositeExtract 64 1
+ 69: 29(ptr) AccessChain 65 32
+ Store 69 68
+ 70: 8(int) CompositeExtract 63 1
+ 71: 35(ptr) AccessChain 14(t) 32
+ Store 71 70
+ 72:12(MyStruct) Load 14(t)
+ 73: 22(ptr) AccessChain 39(outBuf) 21
+ 74: 10 CompositeExtract 72 0
+ 75: 43(ptr) AccessChain 73 21
+ 76: 7(fvec2) CompositeExtract 74 0
+ 77: 46(ptr) AccessChain 75 21
+ Store 77 76
+ 78: 7(fvec2) CompositeExtract 74 1
+ 79: 46(ptr) AccessChain 75 32
+ Store 79 78
+ 80: 11(bool) CompositeExtract 72 1
+ 81: 8(int) Select 80 52 51
+ 82: 54(ptr) AccessChain 73 32
+ Store 82 81
+ 93: 92(ptr) AccessChain 91(uBufN) 21
+ 94: 88(Nested) Load 93
+ 95: 6(float) CompositeExtract 94 0
+ 97: 96(ptr) AccessChain 86(n) 21
+ Store 97 95
+ 98: 87 CompositeExtract 94 1
+ 100: 99(ptr) AccessChain 86(n) 32
+ 101:57(MyStruct) CompositeExtract 98 0
+ 102: 13(ptr) AccessChain 100 21
+ 103: 56 CompositeExtract 101 0
+ 104: 26(ptr) AccessChain 102 21
+ 105: 7(fvec2) CompositeExtract 103 0
+ 106: 29(ptr) AccessChain 104 21
+ Store 106 105
+ 107: 7(fvec2) CompositeExtract 103 1
+ 108: 29(ptr) AccessChain 104 32
+ Store 108 107
+ 109: 8(int) CompositeExtract 101 1
+ 110: 35(ptr) AccessChain 102 32
+ Store 110 109
+ 111:57(MyStruct) CompositeExtract 98 1
+ 112: 13(ptr) AccessChain 100 32
+ 113: 56 CompositeExtract 111 0
+ 114: 26(ptr) AccessChain 112 21
+ 115: 7(fvec2) CompositeExtract 113 0
+ 116: 29(ptr) AccessChain 114 21
+ Store 116 115
+ 117: 7(fvec2) CompositeExtract 113 1
+ 118: 29(ptr) AccessChain 114 32
+ Store 118 117
+ 119: 8(int) CompositeExtract 111 1
+ 120: 35(ptr) AccessChain 112 32
+ Store 120 119
+ 126: 84(Nested) Load 86(n)
+ 128: 127(ptr) AccessChain 125(outBufN) 21
+ 129: 6(float) CompositeExtract 126 0
+ 131: 130(ptr) AccessChain 128 21
+ Store 131 129
+ 132: 83 CompositeExtract 126 1
+ 134: 133(ptr) AccessChain 128 32
+ 135:12(MyStruct) CompositeExtract 132 0
+ 136: 22(ptr) AccessChain 134 21
+ 137: 10 CompositeExtract 135 0
+ 138: 43(ptr) AccessChain 136 21
+ 139: 7(fvec2) CompositeExtract 137 0
+ 140: 46(ptr) AccessChain 138 21
+ Store 140 139
+ 141: 7(fvec2) CompositeExtract 137 1
+ 142: 46(ptr) AccessChain 138 32
+ Store 142 141
+ 143: 11(bool) CompositeExtract 135 1
+ 144: 8(int) Select 143 52 51
+ 145: 54(ptr) AccessChain 136 32
+ Store 145 144
+ 146:12(MyStruct) CompositeExtract 132 1
+ 147: 22(ptr) AccessChain 134 32
+ 148: 10 CompositeExtract 146 0
+ 149: 43(ptr) AccessChain 147 21
+ 150: 7(fvec2) CompositeExtract 148 0
+ 151: 46(ptr) AccessChain 149 21
+ Store 151 150
+ 152: 7(fvec2) CompositeExtract 148 1
+ 153: 46(ptr) AccessChain 149 32
+ Store 153 152
+ 154: 11(bool) CompositeExtract 146 1
+ 155: 8(int) Select 154 52 51
+ 156: 54(ptr) AccessChain 147 32
+ Store 156 155
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out
new file mode 100755
index 0000000..dcbcfa0
--- /dev/null
+++ b/Test/baseResults/spv.multiStructFuncall.frag.out
@@ -0,0 +1,120 @@
+spv.multiStructFuncall.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked fragment stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 63
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "S"
+ MemberName 9(S) 0 "m"
+ Name 12 "fooConst(struct-S-mf441;"
+ Name 11 "s"
+ Name 17 "foo(struct-S-mf441;"
+ Name 16 "s"
+ Name 20 "fooOut(struct-S-mf441;"
+ Name 19 "s"
+ Name 22 "S"
+ MemberName 22(S) 0 "m"
+ Name 23 "blockName"
+ MemberName 23(blockName) 0 "s1"
+ Name 25 ""
+ Name 33 "s2"
+ Name 36 "S"
+ MemberName 36(S) 0 "m"
+ Name 38 "param"
+ Name 45 "param"
+ Name 48 "param"
+ Name 59 "param"
+ MemberDecorate 22(S) 0 ColMajor
+ MemberDecorate 22(S) 0 Offset 0
+ MemberDecorate 22(S) 0 MatrixStride 16
+ MemberDecorate 23(blockName) 0 Offset 0
+ Decorate 23(blockName) BufferBlock
+ Decorate 25 DescriptorSet 0
+ MemberDecorate 36(S) 0 ColMajor
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypeMatrix 7(fvec4) 4
+ 9(S): TypeStruct 8
+ 10: TypeFunction 2 9(S)
+ 14: TypePointer Function 9(S)
+ 15: TypeFunction 2 14(ptr)
+ 22(S): TypeStruct 8
+ 23(blockName): TypeStruct 22(S)
+ 24: TypePointer Uniform 23(blockName)
+ 25: 24(ptr) Variable Uniform
+ 26: TypeInt 32 1
+ 27: 26(int) Constant 0
+ 28: TypePointer Uniform 22(S)
+ 32: TypePointer Private 9(S)
+ 33(s2): 32(ptr) Variable Private
+ 36(S): TypeStruct 8
+ 37: TypePointer Function 36(S)
+ 42: TypePointer Function 8
+ 57: TypePointer Uniform 8
+ 4(main): 2 Function None 3
+ 5: Label
+ 38(param): 37(ptr) Variable Function
+ 45(param): 14(ptr) Variable Function
+ 48(param): 37(ptr) Variable Function
+ 59(param): 14(ptr) Variable Function
+ 29: 28(ptr) AccessChain 25 27
+ 30: 22(S) Load 29
+ 31: 2 FunctionCall 12(fooConst(struct-S-mf441;) 30
+ 34: 9(S) Load 33(s2)
+ 35: 2 FunctionCall 12(fooConst(struct-S-mf441;) 34
+ 39: 28(ptr) AccessChain 25 27
+ 40: 22(S) Load 39
+ 41: 8 CompositeExtract 40 0
+ 43: 42(ptr) AccessChain 38(param) 27
+ Store 43 41
+ 44: 2 FunctionCall 17(foo(struct-S-mf441;) 38(param)
+ 46: 9(S) Load 33(s2)
+ Store 45(param) 46
+ 47: 2 FunctionCall 17(foo(struct-S-mf441;) 45(param)
+ 49: 28(ptr) AccessChain 25 27
+ 50: 22(S) Load 49
+ 51: 8 CompositeExtract 50 0
+ 52: 42(ptr) AccessChain 48(param) 27
+ Store 52 51
+ 53: 2 FunctionCall 20(fooOut(struct-S-mf441;) 48(param)
+ 54: 36(S) Load 48(param)
+ 55: 28(ptr) AccessChain 25 27
+ 56: 8 CompositeExtract 54 0
+ 58: 57(ptr) AccessChain 55 27
+ Store 58 56
+ 60: 9(S) Load 33(s2)
+ Store 59(param) 60
+ 61: 2 FunctionCall 20(fooOut(struct-S-mf441;) 59(param)
+ 62: 9(S) Load 59(param)
+ Store 33(s2) 62
+ Return
+ FunctionEnd
+12(fooConst(struct-S-mf441;): 2 Function None 10
+ 11(s): 9(S) FunctionParameter
+ 13: Label
+ Return
+ FunctionEnd
+17(foo(struct-S-mf441;): 2 Function None 15
+ 16(s): 14(ptr) FunctionParameter
+ 18: Label
+ Return
+ FunctionEnd
+20(fooOut(struct-S-mf441;): 2 Function None 15
+ 19(s): 14(ptr) FunctionParameter
+ 21: Label
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index fb7c70a..edda4a7 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -61,6 +61,7 @@
38: TypeFloat 64
39: 38(float) SpecConstant 1413754136 1074340347
40: 6(float) SpecConstant 1078523331
+ 41: 38(float) SpecConstantOp 115 40
50: 8(int) SpecConstant 12
51: TypeArray 7(fvec4) 50
52: TypePointer Input 51
@@ -69,6 +70,7 @@
63: 33(int) SpecConstant 2
67: 38(float) SpecConstant 1413754136 1074340347
68: 6(float) SpecConstant 1078523331
+ 69: 38(float) SpecConstantOp 115 68
75: TypePointer Function 8(int)
77: 8(int) SpecConstant 8
4(main): 2 Function None 3
@@ -87,7 +89,6 @@
Store 20(color) 37
Branch 32
32: Label
- 41: 38(float) FConvert 40
42: 38(float) FDiv 39 41
43: 6(float) FConvert 42
44: 7(fvec4) Load 20(color)
@@ -119,7 +120,6 @@
Store 20(color) 66
Branch 62
62: Label
- 69: 38(float) FConvert 68
70: 38(float) FDiv 67 69
71: 6(float) FConvert 70
72: 7(fvec4) Load 20(color)
diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out
index ea4c69a..ab42558 100644
--- a/Test/baseResults/spv.specConstantOperations.vert.out
+++ b/Test/baseResults/spv.specConstantOperations.vert.out
@@ -7,9 +7,10 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 131
+// Id's are bound by 135
Capability Shader
+ Capability Float64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
@@ -22,6 +23,7 @@
Decorate 40 SpecId 200
Decorate 42 SpecId 202
Decorate 43 SpecId 203
+ Decorate 45 SpecId 204
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -43,93 +45,97 @@
41: TypeInt 32 0
42: 41(int) SpecConstant 100
43: 6(int) SpecConstant 4294967286
- 44: 41(int) Constant 0
- 45: 22(bool) SpecConstantOp 171 19 44
- 46: 22(bool) SpecConstantOp 171 42 44
- 47: 6(int) SpecConstantOp 169 45 32 12
- 48: 41(int) Constant 1
- 49: 41(int) SpecConstantOp 169 45 48 44
- 50: 41(int) SpecConstantOp 128 43 44
- 51: 6(int) SpecConstantOp 128 42 44
- 52: 6(int) SpecConstantOp 126 19
- 53: 6(int) SpecConstantOp 200 19
- 54: 6(int) SpecConstantOp 128 19 20
- 55: 6(int) SpecConstantOp 128 19 20
- 56: 6(int) Constant 3
- 57: 6(int) SpecConstantOp 130 55 56
- 58: 6(int) Constant 4
- 59: 6(int) SpecConstantOp 130 54 58
- 60: 6(int) SpecConstantOp 132 43 20
- 61: 41(int) Constant 2
- 62: 41(int) SpecConstantOp 132 42 61
- 63: 6(int) Constant 5
- 64: 6(int) SpecConstantOp 135 60 63
- 65: 41(int) Constant 5
- 66: 41(int) SpecConstantOp 134 62 65
- 67: 6(int) SpecConstantOp 139 43 58
- 68: 41(int) Constant 4
- 69: 41(int) SpecConstantOp 137 42 68
- 70: 6(int) SpecConstantOp 132 43 56
- 71: 6(int) SpecConstantOp 135 70 63
- 72: 6(int) Constant 10
- 73: 6(int) SpecConstantOp 195 43 72
- 74: 6(int) Constant 20
- 75: 41(int) SpecConstantOp 194 42 74
- 76: 6(int) SpecConstantOp 196 43 32
- 77: 41(int) SpecConstantOp 196 42 20
- 78: 6(int) Constant 256
- 79: 6(int) SpecConstantOp 197 43 78
- 80: 41(int) Constant 512
- 81: 41(int) SpecConstantOp 198 42 80
- 82: 22(bool) SpecConstantOp 177 19 43
- 83: 22(bool) SpecConstantOp 170 42 42
- 84: 22(bool) SpecConstantOp 173 19 43
- 85: 6(int) Constant 30
- 86: TypeVector 6(int) 4
- 87: 86(ivec4) SpecConstantComposite 74 85 19 19
- 88: 41(int) Constant 4294967295
- 89: 41(int) Constant 4294967294
- 90: TypeVector 41(int) 4
- 91: 90(ivec4) SpecConstantComposite 42 42 88 89
- 92: TypeVector 22(bool) 4
- 93: 90(ivec4) ConstantComposite 44 44 44 44
- 94: 92(bvec4) SpecConstantOp 171 87 93
- 95: 92(bvec4) SpecConstantOp 171 91 93
- 96: 86(ivec4) ConstantComposite 12 12 12 12
- 97: 86(ivec4) ConstantComposite 32 32 32 32
- 98: 86(ivec4) SpecConstantOp 169 94 97 96
- 99: 90(ivec4) ConstantComposite 48 48 48 48
- 100: 90(ivec4) SpecConstantOp 169 94 99 93
- 101: 90(ivec4) SpecConstantOp 128 87 93
- 102: 86(ivec4) SpecConstantOp 128 91 93
- 103: 86(ivec4) SpecConstantOp 200 87
- 104: 86(ivec4) SpecConstantOp 126 87
- 105: 86(ivec4) ConstantComposite 20 20 20 20
- 106: 86(ivec4) SpecConstantOp 128 87 105
- 107: 86(ivec4) SpecConstantOp 128 87 105
- 108: 86(ivec4) ConstantComposite 56 56 56 56
- 109: 86(ivec4) SpecConstantOp 130 107 108
- 110: 86(ivec4) ConstantComposite 58 58 58 58
- 111: 86(ivec4) SpecConstantOp 130 109 110
- 112: 86(ivec4) SpecConstantOp 132 87 105
- 113: 86(ivec4) ConstantComposite 63 63 63 63
- 114: 86(ivec4) SpecConstantOp 135 112 113
- 115: 86(ivec4) SpecConstantOp 139 87 110
- 116: 86(ivec4) ConstantComposite 72 72 72 72
- 117: 86(ivec4) SpecConstantOp 195 87 116
- 118: 86(ivec4) SpecConstantOp 196 87 105
- 119: 6(int) Constant 1024
- 120: 86(ivec4) ConstantComposite 119 119 119 119
- 121: 86(ivec4) SpecConstantOp 197 87 120
- 122: 41(int) Constant 2048
- 123: 90(ivec4) ConstantComposite 122 122 122 122
- 124: 90(ivec4) SpecConstantOp 198 91 123
- 125: 6(int) SpecConstantOp 81 87 0
- 126: TypeVector 6(int) 2
- 127: 126(ivec2) SpecConstantOp 79 87 87 1(GLSL.std.450) 0
- 128: TypeVector 6(int) 3
- 129: 128(ivec3) SpecConstantOp 79 87 87 2 1(GLSL.std.450) 0
- 130: 86(ivec4) SpecConstantOp 79 87 87 1(GLSL.std.450) 2 0 3
+ 44: TypeFloat 64
+ 45: 44(float) SpecConstant 2333366019 1074118410
+ 46: 39(float) SpecConstantOp 115 45
+ 47: 44(float) SpecConstantOp 115 40
+ 48: 41(int) Constant 0
+ 49: 22(bool) SpecConstantOp 171 19 48
+ 50: 22(bool) SpecConstantOp 171 42 48
+ 51: 6(int) SpecConstantOp 169 49 32 12
+ 52: 41(int) Constant 1
+ 53: 41(int) SpecConstantOp 169 49 52 48
+ 54: 41(int) SpecConstantOp 128 43 48
+ 55: 6(int) SpecConstantOp 128 42 48
+ 56: 6(int) SpecConstantOp 126 19
+ 57: 6(int) SpecConstantOp 200 19
+ 58: 6(int) SpecConstantOp 128 19 20
+ 59: 6(int) SpecConstantOp 128 19 20
+ 60: 6(int) Constant 3
+ 61: 6(int) SpecConstantOp 130 59 60
+ 62: 6(int) Constant 4
+ 63: 6(int) SpecConstantOp 130 58 62
+ 64: 6(int) SpecConstantOp 132 43 20
+ 65: 41(int) Constant 2
+ 66: 41(int) SpecConstantOp 132 42 65
+ 67: 6(int) Constant 5
+ 68: 6(int) SpecConstantOp 135 64 67
+ 69: 41(int) Constant 5
+ 70: 41(int) SpecConstantOp 134 66 69
+ 71: 6(int) SpecConstantOp 139 43 62
+ 72: 41(int) Constant 4
+ 73: 41(int) SpecConstantOp 137 42 72
+ 74: 6(int) SpecConstantOp 132 43 60
+ 75: 6(int) SpecConstantOp 135 74 67
+ 76: 6(int) Constant 10
+ 77: 6(int) SpecConstantOp 195 43 76
+ 78: 6(int) Constant 20
+ 79: 41(int) SpecConstantOp 194 42 78
+ 80: 6(int) SpecConstantOp 196 43 32
+ 81: 41(int) SpecConstantOp 196 42 20
+ 82: 6(int) Constant 256
+ 83: 6(int) SpecConstantOp 197 43 82
+ 84: 41(int) Constant 512
+ 85: 41(int) SpecConstantOp 198 42 84
+ 86: 22(bool) SpecConstantOp 177 19 43
+ 87: 22(bool) SpecConstantOp 170 42 42
+ 88: 22(bool) SpecConstantOp 173 19 43
+ 89: 6(int) Constant 30
+ 90: TypeVector 6(int) 4
+ 91: 90(ivec4) SpecConstantComposite 78 89 19 19
+ 92: 41(int) Constant 4294967295
+ 93: 41(int) Constant 4294967294
+ 94: TypeVector 41(int) 4
+ 95: 94(ivec4) SpecConstantComposite 42 42 92 93
+ 96: TypeVector 22(bool) 4
+ 97: 94(ivec4) ConstantComposite 48 48 48 48
+ 98: 96(bvec4) SpecConstantOp 171 91 97
+ 99: 96(bvec4) SpecConstantOp 171 95 97
+ 100: 90(ivec4) ConstantComposite 12 12 12 12
+ 101: 90(ivec4) ConstantComposite 32 32 32 32
+ 102: 90(ivec4) SpecConstantOp 169 98 101 100
+ 103: 94(ivec4) ConstantComposite 52 52 52 52
+ 104: 94(ivec4) SpecConstantOp 169 98 103 97
+ 105: 94(ivec4) SpecConstantOp 128 91 97
+ 106: 90(ivec4) SpecConstantOp 128 95 97
+ 107: 90(ivec4) SpecConstantOp 200 91
+ 108: 90(ivec4) SpecConstantOp 126 91
+ 109: 90(ivec4) ConstantComposite 20 20 20 20
+ 110: 90(ivec4) SpecConstantOp 128 91 109
+ 111: 90(ivec4) SpecConstantOp 128 91 109
+ 112: 90(ivec4) ConstantComposite 60 60 60 60
+ 113: 90(ivec4) SpecConstantOp 130 111 112
+ 114: 90(ivec4) ConstantComposite 62 62 62 62
+ 115: 90(ivec4) SpecConstantOp 130 113 114
+ 116: 90(ivec4) SpecConstantOp 132 91 109
+ 117: 90(ivec4) ConstantComposite 67 67 67 67
+ 118: 90(ivec4) SpecConstantOp 135 116 117
+ 119: 90(ivec4) SpecConstantOp 139 91 114
+ 120: 90(ivec4) ConstantComposite 76 76 76 76
+ 121: 90(ivec4) SpecConstantOp 195 91 120
+ 122: 90(ivec4) SpecConstantOp 196 91 109
+ 123: 6(int) Constant 1024
+ 124: 90(ivec4) ConstantComposite 123 123 123 123
+ 125: 90(ivec4) SpecConstantOp 197 91 124
+ 126: 41(int) Constant 2048
+ 127: 94(ivec4) ConstantComposite 126 126 126 126
+ 128: 94(ivec4) SpecConstantOp 198 95 127
+ 129: 6(int) SpecConstantOp 81 91 0
+ 130: TypeVector 6(int) 2
+ 131: 130(ivec2) SpecConstantOp 79 91 91 1(GLSL.std.450) 0
+ 132: TypeVector 6(int) 3
+ 133: 132(ivec3) SpecConstantOp 79 91 91 2 1(GLSL.std.450) 0
+ 134: 90(ivec4) SpecConstantOp 79 91 91 1(GLSL.std.450) 2 0 3
4(main): 2 Function None 3
5: Label
Return
diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out
index 7c28e10..abff683 100755
--- a/Test/baseResults/spv.structAssignment.frag.out
+++ b/Test/baseResults/spv.structAssignment.frag.out
@@ -1,4 +1,7 @@
spv.structAssignment.frag
+WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ "precision mediump int; precision highp float;"
+
Linked fragment stage:
@@ -33,7 +36,13 @@
Name 40 "samp2D"
Name 44 "coord"
Name 49 "foo"
+ MemberDecorate 8(lunarStruct1) 0 RelaxedPrecision
+ MemberDecorate 9(lunarStruct2) 0 RelaxedPrecision
+ MemberDecorate 10(lunarStruct3) 1 RelaxedPrecision
+ Decorate 16 RelaxedPrecision
Decorate 40(samp2D) DescriptorSet 0
+ Decorate 44(coord) RelaxedPrecision
+ Decorate 45 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out
index 7d934ff..6682e7c 100755
--- a/Test/baseResults/spv.uint.frag.out
+++ b/Test/baseResults/spv.uint.frag.out
@@ -7,12 +7,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 207
+// Id's are bound by 213
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint Fragment 4 "main" 15 68 77 200 202 204
+ EntryPoint Fragment 4 "main" 15 68 77 206 208 210
ExecutionMode 4 OriginUpperLeft
Source ESSL 310
Name 4 "main"
@@ -33,10 +33,10 @@
Name 154 "mask2"
Name 156 "mask3"
Name 160 "mask4"
- Name 200 "f"
- Name 202 "v"
- Name 204 "i"
- Name 206 "b"
+ Name 206 "f"
+ Name 208 "v"
+ Name 210 "i"
+ Name 212 "b"
Decorate 8(count) RelaxedPrecision
Decorate 12(u) RelaxedPrecision
Decorate 15(t) RelaxedPrecision
@@ -138,11 +138,13 @@
Decorate 196 RelaxedPrecision
Decorate 197 RelaxedPrecision
Decorate 198 RelaxedPrecision
- Decorate 200(f) RelaxedPrecision
- Decorate 202(v) RelaxedPrecision
- Decorate 202(v) Flat
- Decorate 204(i) RelaxedPrecision
- Decorate 204(i) Flat
+ Decorate 202 RelaxedPrecision
+ Decorate 203 RelaxedPrecision
+ Decorate 206(f) RelaxedPrecision
+ Decorate 208(v) RelaxedPrecision
+ Decorate 208(v) Flat
+ Decorate 210(i) RelaxedPrecision
+ Decorate 210(i) Flat
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -193,14 +195,16 @@
155: 10(int) Constant 2576
158: 6(int) Constant 4
161: 10(int) Constant 2737
- 199: TypePointer Input 74(float)
- 200(f): 199(ptr) Variable Input
- 201: TypePointer Input 66(ivec4)
- 202(v): 201(ptr) Variable Input
- 203: TypePointer Input 6(int)
- 204(i): 203(ptr) Variable Input
- 205: TypePointer Private 22(bool)
- 206(b): 205(ptr) Variable Private
+ 199: 10(int) Constant 4294967295
+ 200: TypePointer Output 10(int)
+ 205: TypePointer Input 74(float)
+ 206(f): 205(ptr) Variable Input
+ 207: TypePointer Input 66(ivec4)
+ 208(v): 207(ptr) Variable Input
+ 209: TypePointer Input 6(int)
+ 210(i): 209(ptr) Variable Input
+ 211: TypePointer Private 22(bool)
+ 212(b): 211(ptr) Variable Private
4(main): 2 Function None 3
5: Label
8(count): 7(ptr) Variable Function
@@ -434,5 +438,10 @@
197: 66(ivec4) Load 68(c)
198: 66(ivec4) IAdd 197 196
Store 68(c) 198
+ 201: 200(ptr) AccessChain 68(c) 103
+ 202: 10(int) Load 201
+ 203: 10(int) IAdd 202 199
+ 204: 200(ptr) AccessChain 68(c) 103
+ Store 204 203
Return
FunctionEnd
diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out
index 31ac494..f245585 100755
--- a/Test/baseResults/vulkan.ast.vert.out
+++ b/Test/baseResults/vulkan.ast.vert.out
@@ -7,76 +7,76 @@
0:7 Function Parameters:
0:9 Sequence
0:9 Convert float to bool (temp bool)
-0:9 'scf1' (specialization-constant const float)
+0:9 'scf1' (specialization-constant const highp float)
0:9 1.000000
0:10 Construct bool (specialization-constant const bool)
0:10 'scbt' (specialization-constant const bool)
0:10 true (const bool)
0:11 Convert int to bool (specialization-constant const bool)
-0:11 'sci2' (specialization-constant const int)
+0:11 'sci2' (specialization-constant const highp int)
0:11 2 (const int)
0:13 Construct float (temp float)
-0:13 'scf1' (specialization-constant const float)
+0:13 'scf1' (specialization-constant const highp float)
0:13 1.000000
0:14 Convert bool to float (temp float)
0:14 'scbt' (specialization-constant const bool)
0:14 true (const bool)
0:15 Convert int to float (temp float)
-0:15 'sci2' (specialization-constant const int)
+0:15 'sci2' (specialization-constant const highp int)
0:15 2 (const int)
0:17 Convert float to int (temp int)
-0:17 'scf1' (specialization-constant const float)
+0:17 'scf1' (specialization-constant const highp float)
0:17 1.000000
0:18 Convert bool to int (specialization-constant const int)
0:18 'scbt' (specialization-constant const bool)
0:18 true (const bool)
0:19 Construct int (specialization-constant const int)
-0:19 'sci2' (specialization-constant const int)
+0:19 'sci2' (specialization-constant const highp int)
0:19 2 (const int)
-0:21 component-wise multiply (temp float)
-0:21 'scf1' (specialization-constant const float)
+0:21 component-wise multiply (temp highp float)
+0:21 'scf1' (specialization-constant const highp float)
0:21 1.000000
-0:21 'scf1' (specialization-constant const float)
+0:21 'scf1' (specialization-constant const highp float)
0:21 1.000000
0:22 logical-or (specialization-constant const bool)
0:22 'scbt' (specialization-constant const bool)
0:22 true (const bool)
0:22 'scbt' (specialization-constant const bool)
0:22 true (const bool)
-0:23 component-wise multiply (specialization-constant const int)
-0:23 'sci2' (specialization-constant const int)
+0:23 component-wise multiply (specialization-constant const highp int)
+0:23 'sci2' (specialization-constant const highp int)
0:23 2 (const int)
-0:23 'sci2' (specialization-constant const int)
+0:23 'sci2' (specialization-constant const highp int)
0:23 2 (const int)
-0:24 add (temp float)
-0:24 'scf1' (specialization-constant const float)
+0:24 add (temp highp float)
+0:24 'scf1' (specialization-constant const highp float)
0:24 1.000000
-0:24 Convert int to float (temp float)
-0:24 'sci2' (specialization-constant const int)
+0:24 Convert int to float (temp highp float)
+0:24 'sci2' (specialization-constant const highp int)
0:24 2 (const int)
-0:26 Negate value (temp float)
-0:26 'scf1' (specialization-constant const float)
+0:26 Negate value (temp highp float)
+0:26 'scf1' (specialization-constant const highp float)
0:26 1.000000
0:27 Negate conditional (specialization-constant const bool)
0:27 'scbt' (specialization-constant const bool)
0:27 true (const bool)
-0:28 Negate value (specialization-constant const int)
-0:28 'sci2' (specialization-constant const int)
+0:28 Negate value (specialization-constant const highp int)
+0:28 'sci2' (specialization-constant const highp int)
0:28 2 (const int)
0:30 Compare Greater Than (temp bool)
-0:30 'scf1' (specialization-constant const float)
+0:30 'scf1' (specialization-constant const highp float)
0:30 1.000000
-0:30 'scf1' (specialization-constant const float)
+0:30 'scf1' (specialization-constant const highp float)
0:30 1.000000
0:31 Compare Greater Than (specialization-constant const bool)
-0:31 'sci2' (specialization-constant const int)
+0:31 'sci2' (specialization-constant const highp int)
0:31 2 (const int)
-0:31 'sci2' (specialization-constant const int)
+0:31 'sci2' (specialization-constant const highp int)
0:31 2 (const int)
0:33 Compare Not Equal (temp bool)
-0:33 'scf1' (specialization-constant const float)
+0:33 'scf1' (specialization-constant const highp float)
0:33 1.000000
-0:33 'scf1' (specialization-constant const float)
+0:33 'scf1' (specialization-constant const highp float)
0:33 1.000000
0:34 Compare Not Equal (specialization-constant const bool)
0:34 'scbt' (specialization-constant const bool)
@@ -84,48 +84,48 @@
0:34 'scbt' (specialization-constant const bool)
0:34 true (const bool)
0:35 Compare Not Equal (specialization-constant const bool)
-0:35 'sci2' (specialization-constant const int)
+0:35 'sci2' (specialization-constant const highp int)
0:35 2 (const int)
-0:35 'sci2' (specialization-constant const int)
+0:35 'sci2' (specialization-constant const highp int)
0:35 2 (const int)
0:37 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:37 'sci2' (specialization-constant const int)
+0:37 'sci2' (specialization-constant const highp int)
0:37 2 (const int)
-0:37 'sci2' (specialization-constant const int)
+0:37 'sci2' (specialization-constant const highp int)
0:37 2 (const int)
0:38 Construct ivec2 (temp 2-element array of 2-component vector of int)
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
0:40 Construct vec2 (temp 2-component vector of float)
-0:40 'scf1' (specialization-constant const float)
+0:40 'scf1' (specialization-constant const highp float)
0:40 1.000000
-0:40 'scf1' (specialization-constant const float)
+0:40 'scf1' (specialization-constant const highp float)
0:40 1.000000
0:41 Construct vec2 (temp 2-element array of 2-component vector of float)
0:41 Construct vec2 (temp 2-component vector of float)
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
0:41 Construct vec2 (temp 2-component vector of float)
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
0:? Linker Objects
-0:? 'scf1' (specialization-constant const float)
+0:? 'scf1' (specialization-constant const highp float)
0:? 1.000000
0:? 'scbt' (specialization-constant const bool)
0:? true (const bool)
-0:? 'sci2' (specialization-constant const int)
+0:? 'sci2' (specialization-constant const highp int)
0:? 2 (const int)
@@ -138,76 +138,76 @@
0:7 Function Parameters:
0:9 Sequence
0:9 Convert float to bool (temp bool)
-0:9 'scf1' (specialization-constant const float)
+0:9 'scf1' (specialization-constant const highp float)
0:9 1.000000
0:10 Construct bool (specialization-constant const bool)
0:10 'scbt' (specialization-constant const bool)
0:10 true (const bool)
0:11 Convert int to bool (specialization-constant const bool)
-0:11 'sci2' (specialization-constant const int)
+0:11 'sci2' (specialization-constant const highp int)
0:11 2 (const int)
0:13 Construct float (temp float)
-0:13 'scf1' (specialization-constant const float)
+0:13 'scf1' (specialization-constant const highp float)
0:13 1.000000
0:14 Convert bool to float (temp float)
0:14 'scbt' (specialization-constant const bool)
0:14 true (const bool)
0:15 Convert int to float (temp float)
-0:15 'sci2' (specialization-constant const int)
+0:15 'sci2' (specialization-constant const highp int)
0:15 2 (const int)
0:17 Convert float to int (temp int)
-0:17 'scf1' (specialization-constant const float)
+0:17 'scf1' (specialization-constant const highp float)
0:17 1.000000
0:18 Convert bool to int (specialization-constant const int)
0:18 'scbt' (specialization-constant const bool)
0:18 true (const bool)
0:19 Construct int (specialization-constant const int)
-0:19 'sci2' (specialization-constant const int)
+0:19 'sci2' (specialization-constant const highp int)
0:19 2 (const int)
-0:21 component-wise multiply (temp float)
-0:21 'scf1' (specialization-constant const float)
+0:21 component-wise multiply (temp highp float)
+0:21 'scf1' (specialization-constant const highp float)
0:21 1.000000
-0:21 'scf1' (specialization-constant const float)
+0:21 'scf1' (specialization-constant const highp float)
0:21 1.000000
0:22 logical-or (specialization-constant const bool)
0:22 'scbt' (specialization-constant const bool)
0:22 true (const bool)
0:22 'scbt' (specialization-constant const bool)
0:22 true (const bool)
-0:23 component-wise multiply (specialization-constant const int)
-0:23 'sci2' (specialization-constant const int)
+0:23 component-wise multiply (specialization-constant const highp int)
+0:23 'sci2' (specialization-constant const highp int)
0:23 2 (const int)
-0:23 'sci2' (specialization-constant const int)
+0:23 'sci2' (specialization-constant const highp int)
0:23 2 (const int)
-0:24 add (temp float)
-0:24 'scf1' (specialization-constant const float)
+0:24 add (temp highp float)
+0:24 'scf1' (specialization-constant const highp float)
0:24 1.000000
-0:24 Convert int to float (temp float)
-0:24 'sci2' (specialization-constant const int)
+0:24 Convert int to float (temp highp float)
+0:24 'sci2' (specialization-constant const highp int)
0:24 2 (const int)
-0:26 Negate value (temp float)
-0:26 'scf1' (specialization-constant const float)
+0:26 Negate value (temp highp float)
+0:26 'scf1' (specialization-constant const highp float)
0:26 1.000000
0:27 Negate conditional (specialization-constant const bool)
0:27 'scbt' (specialization-constant const bool)
0:27 true (const bool)
-0:28 Negate value (specialization-constant const int)
-0:28 'sci2' (specialization-constant const int)
+0:28 Negate value (specialization-constant const highp int)
+0:28 'sci2' (specialization-constant const highp int)
0:28 2 (const int)
0:30 Compare Greater Than (temp bool)
-0:30 'scf1' (specialization-constant const float)
+0:30 'scf1' (specialization-constant const highp float)
0:30 1.000000
-0:30 'scf1' (specialization-constant const float)
+0:30 'scf1' (specialization-constant const highp float)
0:30 1.000000
0:31 Compare Greater Than (specialization-constant const bool)
-0:31 'sci2' (specialization-constant const int)
+0:31 'sci2' (specialization-constant const highp int)
0:31 2 (const int)
-0:31 'sci2' (specialization-constant const int)
+0:31 'sci2' (specialization-constant const highp int)
0:31 2 (const int)
0:33 Compare Not Equal (temp bool)
-0:33 'scf1' (specialization-constant const float)
+0:33 'scf1' (specialization-constant const highp float)
0:33 1.000000
-0:33 'scf1' (specialization-constant const float)
+0:33 'scf1' (specialization-constant const highp float)
0:33 1.000000
0:34 Compare Not Equal (specialization-constant const bool)
0:34 'scbt' (specialization-constant const bool)
@@ -215,48 +215,48 @@
0:34 'scbt' (specialization-constant const bool)
0:34 true (const bool)
0:35 Compare Not Equal (specialization-constant const bool)
-0:35 'sci2' (specialization-constant const int)
+0:35 'sci2' (specialization-constant const highp int)
0:35 2 (const int)
-0:35 'sci2' (specialization-constant const int)
+0:35 'sci2' (specialization-constant const highp int)
0:35 2 (const int)
0:37 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:37 'sci2' (specialization-constant const int)
+0:37 'sci2' (specialization-constant const highp int)
0:37 2 (const int)
-0:37 'sci2' (specialization-constant const int)
+0:37 'sci2' (specialization-constant const highp int)
0:37 2 (const int)
0:38 Construct ivec2 (temp 2-element array of 2-component vector of int)
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
-0:38 'sci2' (specialization-constant const int)
+0:38 'sci2' (specialization-constant const highp int)
0:38 2 (const int)
0:40 Construct vec2 (temp 2-component vector of float)
-0:40 'scf1' (specialization-constant const float)
+0:40 'scf1' (specialization-constant const highp float)
0:40 1.000000
-0:40 'scf1' (specialization-constant const float)
+0:40 'scf1' (specialization-constant const highp float)
0:40 1.000000
0:41 Construct vec2 (temp 2-element array of 2-component vector of float)
0:41 Construct vec2 (temp 2-component vector of float)
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
0:41 Construct vec2 (temp 2-component vector of float)
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
-0:41 'scf1' (specialization-constant const float)
+0:41 'scf1' (specialization-constant const highp float)
0:41 1.000000
0:? Linker Objects
-0:? 'scf1' (specialization-constant const float)
+0:? 'scf1' (specialization-constant const highp float)
0:? 1.000000
0:? 'scbt' (specialization-constant const bool)
0:? true (const bool)
-0:? 'sci2' (specialization-constant const int)
+0:? 'sci2' (specialization-constant const highp int)
0:? 2 (const int)
// Module Version 10000
diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out
index 0132759..d4da919 100644
--- a/Test/baseResults/vulkan.frag.out
+++ b/Test/baseResults/vulkan.frag.out
@@ -14,7 +14,7 @@
ERROR: 0:28: 'sampler2D' : sampler/image types can only be used in uniform variables or function parameters: s2D
ERROR: 0:29: 'sampler3D' : sampler-constructor cannot make an array of samplers
ERROR: 0:29: 'sampler3D' : sampler/image types can only be used in uniform variables or function parameters: s3d
-ERROR: 0:29: '=' : cannot convert from 'const float' to 'global 4-element array of sampler3D'
+ERROR: 0:29: '=' : cannot convert from 'const float' to 'global 4-element array of highp sampler3D'
ERROR: 0:39: 'push_constant' : can only be used with a uniform
ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:43: 'push_constant' : can only be used with a block
@@ -33,6 +33,8 @@
ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan
ERROR: 0:73: 'texture' : no matching overloaded function found
ERROR: 0:74: 'imageStore' : no matching overloaded function found
+WARNING: 0:82: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ "precision mediump int; precision highp float;"
ERROR: 0:91: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:92: 'call argument' : sampler constructor must appear at point of use
ERROR: 0:93: ',' : sampler constructor must appear at point of use
diff --git a/Test/baseResults/vulkan.vert.out b/Test/baseResults/vulkan.vert.out
index 351e6f1..5aeaa74 100644
--- a/Test/baseResults/vulkan.vert.out
+++ b/Test/baseResults/vulkan.vert.out
@@ -15,7 +15,7 @@
ERROR: 0:16: 'constant_id' : specialization-constant id already used
ERROR: 0:16: 'constant_id' : cannot declare a default, can only be used on a scalar
ERROR: 0:20: 'subpassLoad' : no matching overloaded function found
-ERROR: 0:20: 'assign' : cannot convert from 'const float' to 'smooth out 4-component vector of float'
+ERROR: 0:20: 'assign' : cannot convert from 'const float' to 'smooth out highp 4-component vector of float'
ERROR: 0:23: 'atomic counter types' : not allowed when using GLSL for Vulkan
ERROR: 0:24: 'shared' : not allowed when generating SPIR-V
ERROR: 0:25: 'packed' : not allowed when generating SPIR-V
diff --git a/Test/hlsl.attribute.frag b/Test/hlsl.attribute.frag
index 25c72d4..9ff8541 100644
--- a/Test/hlsl.attribute.frag
+++ b/Test/hlsl.attribute.frag
@@ -1,4 +1,4 @@
-float4 PixelShaderFunction(float4 input) : COLOR0
+void PixelShaderFunction(float4 input) : COLOR0
{
[unroll];
[];
diff --git a/Test/hlsl.buffer.frag b/Test/hlsl.buffer.frag
index e01e4fc..4e28043 100644
--- a/Test/hlsl.buffer.frag
+++ b/Test/hlsl.buffer.frag
@@ -6,7 +6,7 @@
float4 v2;
};
-cbuffer cbufName : register(b2) {
+cbuffer cbufName : register(b2, space10) {
float4 v3;
int i3 : packoffset(c1.y);
};
diff --git a/Test/hlsl.depthGreater.frag b/Test/hlsl.depthGreater.frag
new file mode 100644
index 0000000..ca41f08
--- /dev/null
+++ b/Test/hlsl.depthGreater.frag
@@ -0,0 +1,4 @@
+void PixelShaderFunction(out float depth : SV_DepthGreaterEqual)
+{
+ depth = 0.2;
+}
diff --git a/Test/hlsl.depthLess.frag b/Test/hlsl.depthLess.frag
new file mode 100644
index 0000000..aca7dbb
--- /dev/null
+++ b/Test/hlsl.depthLess.frag
@@ -0,0 +1,4 @@
+float PixelShaderFunction() : SV_DepthLessEqual
+{
+ return 0.2;
+}
diff --git a/Test/hlsl.discard.frag b/Test/hlsl.discard.frag
index e8b5267..7d9271c 100644
--- a/Test/hlsl.discard.frag
+++ b/Test/hlsl.discard.frag
@@ -4,7 +4,7 @@
discard;
}
-float4 PixelShaderFunction(float4 input) : COLOR0
+void PixelShaderFunction(float4 input) : COLOR0
{
foo(input.z);
if (input.x)
diff --git a/Test/hlsl.entry-in.frag b/Test/hlsl.entry-in.frag
new file mode 100644
index 0000000..e15955d
--- /dev/null
+++ b/Test/hlsl.entry-in.frag
@@ -0,0 +1,20 @@
+struct InParam {
+ float2 v;
+ float4 fragCoord : SV_POSITION;
+ int2 i2;
+};
+
+float fun(InParam p)
+{
+ return p.v.y + p.fragCoord.x;
+}
+
+float4 PixelShaderFunction(InParam i) : COLOR0
+{
+ InParam local;
+ local = i;
+ float ret1 = fun(local);
+ float ret2 = fun(i);
+
+ return local.fragCoord * ret1 * ret2;
+}
diff --git a/Test/hlsl.entry-out.frag b/Test/hlsl.entry-out.frag
new file mode 100644
index 0000000..14f0e45
--- /dev/null
+++ b/Test/hlsl.entry-out.frag
@@ -0,0 +1,17 @@
+struct OutParam {
+ float2 v;
+ int2 i;
+};
+
+float4 PixelShaderFunction(float4 input, out float4 out1, out OutParam out2, out OutParam out3) : COLOR0
+{
+ out1 = input;
+ out2.v = 2.0;
+ out2.i = 3;
+ OutParam local;
+ local.v = 12.0;
+ local.i = 13;
+ out3 = local;
+
+ return out1;
+}
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
index b55c242..c04acae 100644
--- a/Test/hlsl.intrinsics.frag
+++ b/Test/hlsl.intrinsics.frag
@@ -482,3 +482,12 @@
float2x4 r15 = mul(inFM2x3, inFM3x4);
float3x4 r16 = mul(inFM3x2, inFM2x4);
}
+
+struct PS_OUTPUT { float4 color : SV_Target0; };
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT ps_output;
+ ps_output.color = 1.0;
+ return ps_output;
+};
diff --git a/Test/hlsl.intrinsics.negative.comp b/Test/hlsl.intrinsics.negative.comp
index c89d04b..fe612d6 100644
--- a/Test/hlsl.intrinsics.negative.comp
+++ b/Test/hlsl.intrinsics.negative.comp
@@ -4,49 +4,49 @@
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(3.0); // expected error: only valid on integers
- clip(inF0); // expected error: only valid in pixel stage
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // expected error: only valid in pixel stage
- ddx_coarse(inF0); // expected error: only valid in pixel stage
- ddx_fine(inF0); // expected error: only valid in pixel stage
- ddy(inF0); // expected error: only valid in pixel stage
- ddy_coarse(inF0); // expected error: only valid in pixel stage
- ddy_fine(inF0); // expected error: only valid in pixel stage
- determinant(inF0); // expected error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(3.0); // expected error: only valid on integers
+ // clip(inF0); // expected error: only valid in pixel stage
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // expected error: only valid in pixel stage
+ // ddx_coarse(inF0); // expected error: only valid in pixel stage
+ // ddx_fine(inF0); // expected error: only valid in pixel stage
+ // ddy(inF0); // expected error: only valid in pixel stage
+ // ddy_coarse(inF0); // expected error: only valid in pixel stage
+ // ddy_fine(inF0); // expected error: only valid in pixel stage
+ // determinant(inF0); // expected error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- length(inF0); // expect error: invalid on scalars
- msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
- normalize(inF0); // expect error: invalid on scalars
- reflect(inF0, inF1); // expect error: invalid on scalars
- refract(inF0, inF1, inF2); // expect error: invalid on scalars
- refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // length(inF0); // expect error: invalid on scalars
+ // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
+ // normalize(inF0); // expect error: invalid on scalars
+ // reflect(inF0, inF1); // expect error: invalid on scalars
+ // refract(inF0, inF1, inF2); // expect error: invalid on scalars
+ // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -57,7 +57,7 @@
{
// TODO: ... add when float1 prototypes are generated
- GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
+ // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
@@ -66,43 +66,43 @@
{
uint2 out_u2;
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -113,41 +113,41 @@
{
uint3 out_u3;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -158,41 +158,41 @@
{
uint4 out_u4;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- determinant(inF0); // expect error: only valid on mats
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
diff --git a/Test/hlsl.intrinsics.negative.vert b/Test/hlsl.intrinsics.negative.vert
index a5030cf..fcfb761 100644
--- a/Test/hlsl.intrinsics.negative.vert
+++ b/Test/hlsl.intrinsics.negative.vert
@@ -15,56 +15,56 @@
{
uint out_u1;
- AllMemoryBarrier(); // expected error: only valid in compute stage
- AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(3.0); // expected error: only valid on integers
- CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
- clip(inF0); // expected error: only valid in pixel stage
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
- DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- ddx(inF0); // expected error: only valid in pixel stage
- ddx_coarse(inF0); // expected error: only valid in pixel stage
- ddx_fine(inF0); // expected error: only valid in pixel stage
- ddy(inF0); // expected error: only valid in pixel stage
- ddy_coarse(inF0); // expected error: only valid in pixel stage
- ddy_fine(inF0); // expected error: only valid in pixel stage
- determinant(inF0); // expected error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // AllMemoryBarrier(); // expected error: only valid in compute stage
+ // AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(3.0); // expected error: only valid on integers
+ // CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
+ // clip(inF0); // expected error: only valid in pixel stage
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
+ // DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // ddx(inF0); // expected error: only valid in pixel stage
+ // ddx_coarse(inF0); // expected error: only valid in pixel stage
+ // ddx_fine(inF0); // expected error: only valid in pixel stage
+ // ddy(inF0); // expected error: only valid in pixel stage
+ // ddy_coarse(inF0); // expected error: only valid in pixel stage
+ // ddy_fine(inF0); // expected error: only valid in pixel stage
+ // determinant(inF0); // expected error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- GroupMemoryBarrier(); // expected error: only valid in compute stage
- GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- length(inF0); // expect error: invalid on scalars
- msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
- normalize(inF0); // expect error: invalid on scalars
- reflect(inF0, inF1); // expect error: invalid on scalars
- refract(inF0, inF1, inF2); // expect error: invalid on scalars
- refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // GroupMemoryBarrier(); // expected error: only valid in compute stage
+ // GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // length(inF0); // expect error: invalid on scalars
+ // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
+ // normalize(inF0); // expect error: invalid on scalars
+ // reflect(inF0, inF1); // expect error: invalid on scalars
+ // refract(inF0, inF1, inF2); // expect error: invalid on scalars
+ // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -75,7 +75,7 @@
{
// TODO: ... add when float1 prototypes are generated
- GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
+ // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
@@ -84,43 +84,43 @@
{
uint2 out_u2;
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -131,41 +131,41 @@
{
uint3 out_u3;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -176,41 +176,41 @@
{
uint4 out_u4;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- determinant(inF0); // expect error: only valid on mats
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -218,32 +218,7 @@
}
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
-#define MATFNS() \
- countbits(inF0); \
- cross(inF0, inF1); \
- D3DCOLORtoUBYTE4(inF0); \
- ddx(inF0); \
- ddx_coarse(inF0); \
- ddx_fine(inF0); \
- ddy(inF0); \
- ddy_coarse(inF0); \
- ddy_fine(inF0); \
- EvaluateAttributeAtCentroid(inF0); \
- EvaluateAttributeAtSample(inF0, 2); \
- EvaluateAttributeSnapped(inF0, int2(2)); \
- f16tof32(inF0); \
- firstbithigh(inF0); \
- firstbitlow(inF0); \
- fwidth(inF0); \
- noise(inF0); \
- reversebits(inF0); \
- length(inF0); \
- noise(inF0); \
- normalize(inF0); \
- reflect(inF0, inF1); \
- refract(inF0, inF1, 1.0); \
- reversebits(inF0); \
-
+#define MATFNS()
// TODO: turn on non-square matrix tests when protos are available.
diff --git a/Test/hlsl.layout.frag b/Test/hlsl.layout.frag
new file mode 100644
index 0000000..4c2f7ce
--- /dev/null
+++ b/Test/hlsl.layout.frag
@@ -0,0 +1,18 @@
+layout(set=3,binding=5) tbuffer tbufName {
+ layout(offset = 16) float4 v1;
+};
+
+layout(push_constant) tbuffer tbufName2 {
+ float4 v5;
+};
+
+layout(constant_id=17) const int specConst = 10;
+
+tbuffer tbufName2 : layout(set=4,binding=7) {
+ layout(offset = 16) float4 v1PostLayout;
+};
+
+float4 PixelShaderFunction(float4 input) : COLOR0
+{
+ return input + v1 + v5 + v1PostLayout;
+}
diff --git a/Test/hlsl.matType.frag b/Test/hlsl.matType.frag
index 36d71e3..ee7c047 100644
--- a/Test/hlsl.matType.frag
+++ b/Test/hlsl.matType.frag
@@ -7,4 +7,5 @@
float1 ShaderFunction(float1 inFloat1, float inScalar) : COLOR0
{
+ return inFloat1;
}
diff --git a/Test/hlsl.matrixindex.frag b/Test/hlsl.matrixindex.frag
new file mode 100644
index 0000000..f352c0e
--- /dev/null
+++ b/Test/hlsl.matrixindex.frag
@@ -0,0 +1,49 @@
+uniform int idx;
+uniform float3x2 um;
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+};
+
+PS_OUTPUT main()
+{
+ // matrices of 3 rows, 2 columns (regardless of row vs col major storage)
+ const float3x2 m1 = { { 10, 11 }, // row-wise initialization
+ { 12, 13 },
+ { 14, 15 } };
+
+ const float3x2 m2 = { 20, 21, 22, 23, 24, 25 }; // component-wise matrix initialization is allowed
+ const float3x2 m3 = { 30, 31, 33, 33, 34, 35 }; // component-wise matrix initialization is allowed
+
+ // These can be observed in the AST post-const folding to ensure we obtain the right value,
+ // as given in comments to the right of each line. Note that the first indirection into a
+ // matrix returns a row vector.
+ float e1_00 = m1[0][0]; // 10
+ float e1_01 = m1[0][1]; // 11
+ float e1_10 = m1[1][0]; // 12
+ float e1_11 = m1[1][1]; // 13
+ float e1_20 = m1[2][0]; // 14
+ float e1_21 = m1[2][1]; // 15
+
+ float e2_00 = m2[0][0]; // 20
+ float e2_01 = m2[0][1]; // 21
+ float e2_10 = m2[1][0]; // 22
+ float e2_11 = m2[1][1]; // 23
+ float e2_20 = m2[2][0]; // 24
+ float e2_21 = m2[2][1]; // 25
+
+ // float e3a_00 = m3._m00; // TODO... also as an lvalue for a non-const matrix
+ // float e3b_00 = m3._11; // TODO... also as an lvalue for a non-const matrix
+
+ float2 r0a = m1[0]; // row0: 10,11: types must match: constant index into constant
+ float2 r1a = m1[1]; // row1: 12,13: ...
+ float2 r2a = m1[2]; // row2: 14,15: ...
+
+ float2 r0b = m2[idx]; // types should match: variable index into constant
+ float2 r0c = um[idx]; // types should match: variable index into variable
+
+ PS_OUTPUT psout;
+ psout.Color = e2_11; // 23
+ return psout;
+}
diff --git a/Test/hlsl.multiEntry.vert b/Test/hlsl.multiEntry.vert
new file mode 100755
index 0000000..d155c26
--- /dev/null
+++ b/Test/hlsl.multiEntry.vert
@@ -0,0 +1,11 @@
+Buffer<float4> Position;
+
+float4 FakeEntrypoint(uint Index : SV_VERTEXID) : SV_POSITION
+{
+ return Position.Load(Index);
+}
+
+float4 RealEntrypoint(uint Index : SV_VERTEXID) : SV_POSITION
+{
+ return FakeEntrypoint(Index);
+}
\ No newline at end of file
diff --git a/Test/hlsl.overload.frag b/Test/hlsl.overload.frag
new file mode 100644
index 0000000..b5ddf49
--- /dev/null
+++ b/Test/hlsl.overload.frag
@@ -0,0 +1,142 @@
+// function selection under type conversion
+void foo1(double a, bool b) {}
+void foo1(double a, uint b) {}
+void foo1(double a, int b) {}
+void foo1(double a, float b) {}
+void foo1(double a, double b){}
+
+// uint -> int
+void foo2(int a, bool b) {}
+void foo2(int a, uint b) {}
+void foo2(int a, int b) {}
+void foo2(int a, float b) {}
+void foo2(int a, double b){}
+
+// everything can promote
+void foo3(bool b) {}
+void foo4(uint b) {}
+void foo5(int b) {}
+void foo6(float b) {}
+void foo7(double b){}
+
+// shorter forward chain better than longer or backward chain
+void foo8(float) {}
+void foo8(double) {}
+void foo9(int) {}
+void foo9(uint) {}
+void foo10(bool) {}
+void foo10(int) {}
+
+// shape change is worse
+void foo11(float3) {}
+void foo11(double) {}
+void foo11(int3) {}
+void foo11(uint) {}
+void foo12(float1) {}
+void foo12(double3) {}
+void foo16(uint) {}
+void foo16(uint2) {}
+
+// shape change
+void foo13(float3) {}
+void foo14(int1) {}
+void foo15(bool1) {}
+
+float4 PixelShaderFunction(float4 input) : COLOR0
+{
+ bool b;
+ double d;
+ uint u;
+ int i;
+ float f;
+
+ foo1(d, b);
+ foo1(d, d);
+ foo1(d, u);
+ foo1(d, i);
+ foo1(d, f);
+
+ foo1(f, b);
+ foo1(f, d);
+ foo1(f, u);
+ foo1(f, i);
+ foo1(f, f);
+
+ foo1(u, b);
+ foo1(u, d);
+ foo1(u, u);
+ foo1(u, i);
+ foo1(u, f);
+
+ foo1(i, b);
+ foo1(i, d);
+ foo1(i, u);
+ foo1(i, i);
+ foo1(i, f);
+
+ foo2(u, b);
+ foo2(u, d);
+ foo2(u, u);
+ foo2(u, i);
+ foo2(u, f);
+
+ foo2(i, b);
+ foo2(i, d);
+ foo2(i, u);
+ foo2(i, i);
+ foo2(i, f);
+
+ foo3(b);
+ foo3(d);
+ foo3(u);
+ foo3(i);
+ foo3(f);
+
+ foo4(b);
+ foo4(d);
+ foo4(u);
+ foo4(i);
+ foo4(f);
+
+ foo5(b);
+ foo5(d);
+ foo5(u);
+ foo5(i);
+ foo5(f);
+
+ foo6(b);
+ foo6(d);
+ foo6(u);
+ foo6(i);
+ foo6(f);
+
+ foo7(b);
+ foo7(d);
+ foo7(u);
+ foo7(i);
+ foo7(f);
+
+ foo8(b);
+ foo8(u);
+ foo8(i);
+
+ foo9(b);
+ foo9(f);
+ foo9(d);
+
+ foo10(u);
+ foo10(f);
+ foo10(d);
+
+ foo11(b);
+ foo11(f);
+ foo12(float3(f));
+ foo16(int2(i,i));
+
+ foo13(f);
+ foo14(int4(i));
+ foo15(b);
+ foo15(bool3(b));
+
+ return input;
+}
diff --git a/Test/hlsl.precise.frag b/Test/hlsl.precise.frag
new file mode 100644
index 0000000..7518de5
--- /dev/null
+++ b/Test/hlsl.precise.frag
@@ -0,0 +1,14 @@
+
+struct PS_OUTPUT { precise float4 color : SV_Target0; };
+
+precise float precisefloat;
+
+void MyFunction(in precise float myfloat, out precise float3 myfloat3) { }
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT ps_output;
+ ps_output.color = 1.0;
+ return ps_output;
+}
+
diff --git a/Test/hlsl.promotions.frag b/Test/hlsl.promotions.frag
new file mode 100644
index 0000000..647096d
--- /dev/null
+++ b/Test/hlsl.promotions.frag
@@ -0,0 +1,201 @@
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+};
+
+uniform int3 i3;
+uniform bool3 b3;
+uniform float3 f3;
+uniform uint3 u3;
+uniform double3 d3;
+
+uniform int is;
+uniform bool bs;
+uniform float fs;
+uniform uint us;
+uniform double ds;
+
+void Fn_F3(float3 x) { }
+void Fn_I3(int3 x) { }
+void Fn_U3(uint3 x) { }
+void Fn_B3(bool3 x) { }
+void Fn_D3(double3 x) { }
+
+// ----------- Test implicit conversions on function returns -----------
+float3 Fn_R_F3I(out float3 p) { p = i3; return i3; }
+float3 Fn_R_F3U(out float3 p) { p = u3; return u3; }
+float3 Fn_R_F3B(out float3 p) { p = b3; return b3; }
+float3 Fn_R_F3D(out float3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+int3 Fn_R_I3U(out int3 p) { p = u3; return u3; }
+int3 Fn_R_I3B(out int3 p) { p = b3; return b3; }
+int3 Fn_R_I3F(out int3 p) { p = f3; return f3; }
+int3 Fn_R_I3D(out int3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+uint3 Fn_R_U3I(out uint3 p) { p = i3; return i3; }
+uint3 Fn_R_U3F(out uint3 p) { p = f3; return f3; }
+uint3 Fn_R_U3B(out uint3 p) { p = b3; return b3; }
+uint3 Fn_R_U3D(out uint3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+bool3 Fn_R_B3I(out bool3 p) { p = i3; return i3; }
+bool3 Fn_R_B3U(out bool3 p) { p = u3; return u3; }
+bool3 Fn_R_B3F(out bool3 p) { p = f3; return f3; }
+bool3 Fn_R_B3D(out bool3 p) { p = d3; return d3; }
+
+double3 Fn_R_D3I(out double3 p) { p = i3; return i3; }
+double3 Fn_R_D3U(out double3 p) { p = u3; return u3; }
+double3 Fn_R_D3B(out double3 p) { p = b3; return b3; }
+double3 Fn_R_D3F(out double3 p) { p = f3; return f3; }
+
+PS_OUTPUT main()
+{
+ // ----------- assignment conversions -----------
+ float3 r00 = i3;
+ float3 r01 = b3;
+ float3 r02 = u3;
+ float3 r03 = d3; // valid, but loss of precision on downconversion.
+
+ int3 r10 = b3;
+ int3 r11 = u3;
+ int3 r12 = f3;
+ int3 r13 = d3; // valid, but loss of precision on downconversion.
+
+ uint3 r20 = b3;
+ uint3 r21 = i3;
+ uint3 r22 = f3;
+ uint3 r23 = d3; // valid, but loss of precision on downconversion.
+
+ bool3 r30 = i3;
+ bool3 r31 = u3;
+ bool3 r32 = f3;
+ bool3 r33 = d3;
+
+ double3 r40 = i3;
+ double3 r41 = u3;
+ double3 r42 = f3;
+ double3 r43 = b3;
+
+ // ----------- assign ops: vector times vector -----------
+ r00 *= i3;
+ r01 *= b3;
+ r02 *= u3;
+ r03 *= d3; // valid, but loss of precision on downconversion.
+
+ r10 *= b3;
+ r11 *= u3;
+ r12 *= f3;
+ r13 *= d3; // valid, but loss of precision on downconversion.
+
+ r20 *= b3;
+ r21 *= i3;
+ r22 *= f3;
+ r23 *= d3; // valid, but loss of precision on downconversion.
+
+ // No mul operator for bools
+
+ r40 *= i3;
+ r41 *= u3;
+ r42 *= f3;
+ r43 *= b3;
+
+ // ----------- assign ops: vector times scalar -----------
+ r00 *= is;
+ r01 *= bs;
+ r02 *= us;
+ r03 *= ds; // valid, but loss of precision on downconversion.
+
+ r10 *= bs;
+ r11 *= us;
+ r12 *= fs;
+ r13 *= ds; // valid, but loss of precision on downconversion.
+
+ r20 *= bs;
+ r21 *= is;
+ r22 *= fs;
+ r23 *= ds; // valid, but loss of precision on downconversion.
+
+ // No mul operator for bools
+
+ r40 *= is;
+ r41 *= us;
+ r42 *= fs;
+ r43 *= bs;
+
+
+#define FN_OVERLOADS 0 // change to 1 when overloads under promotions are in place
+
+#if FN_OVERLOADS
+ Fn_F3(i3);
+ Fn_F3(u3);
+ Fn_F3(f3);
+ Fn_F3(b3);
+ Fn_F3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_I3(i3);
+ Fn_I3(u3);
+ Fn_I3(f3);
+ Fn_I3(b3);
+ Fn_I3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_U3(i3);
+ Fn_U3(u3);
+ Fn_U3(f3);
+ Fn_U3(b3);
+ Fn_U3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_B3(i3);
+ Fn_B3(u3);
+ Fn_B3(f3);
+ Fn_B3(b3);
+ Fn_B3(d3);
+
+ Fn_D3(i3);
+ Fn_D3(u3);
+ Fn_D3(f3);
+ Fn_D3(b3);
+ Fn_D3(d3);
+
+ Fn_F3(i3.x);
+ Fn_F3(u3.x);
+ Fn_F3(f3.x);
+ Fn_F3(b3.x);
+ Fn_F3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_I3(i3.x);
+ Fn_I3(u3.x);
+ Fn_I3(f3.x);
+ Fn_I3(b3.x);
+ Fn_I3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_U3(i3.x);
+ Fn_U3(u3.x);
+ Fn_U3(f3.x);
+ Fn_U3(b3.x);
+ Fn_U3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_B3(i3.x);
+ Fn_B3(u3.x);
+ Fn_B3(f3.x);
+ Fn_B3(b3.x);
+ Fn_B3(d3.x);
+
+ Fn_D3(i3.x);
+ Fn_D3(u3.x);
+ Fn_D3(f3.x);
+ Fn_D3(b3.x);
+ Fn_D3(d3.x);
+#endif
+
+ const int si = 3;
+ const float sf = 1.2;
+
+ int c1 = si * sf; // 3.6 (not 3!)
+ int c2 = sf * si; // 3.6 (not 3!)
+
+ float4 outval = float4(si * sf, sf*si, c1, c2);
+
+ PS_OUTPUT psout;
+ psout.Color = outval;
+ return psout;
+}
diff --git a/Test/hlsl.reflection.vert b/Test/hlsl.reflection.vert
new file mode 100644
index 0000000..21cc810
--- /dev/null
+++ b/Test/hlsl.reflection.vert
@@ -0,0 +1,165 @@
+
+cbuffer nameless {
+ float3 anonMember1;
+ float3x2 m23;
+ int scalarAfterm23;
+ float4 anonDeadMember2;
+ float4 anonMember3;
+ int scalarBeforeArray;
+ float floatArray[5];
+ int scalarAfterArray;
+ float2x2 m22[9];
+};
+
+cbuffer c_nameless {
+ float3 c_anonMember1;
+ float3x2 c_m23;
+ int c_scalarAfterm23;
+ float4 c_anonDeadMember2;
+ float4 c_anonMember3;
+};
+
+cbuffer named {
+ float3 deadMember1;
+ int scalar;
+ float4 member2;
+ float4 member3;
+ float2 memfloat2;
+ float memf1;
+ bool memf2;
+ int memf3;
+ float2 memfloat2a;
+ float2x2 m22[7];
+} ablock;
+
+cbuffer namelessdead {
+ int a;
+};
+
+cbuffer namedDead {
+ int b;
+} bblock;
+
+struct N1 {
+ float a;
+};
+
+struct N2 {
+ float b;
+ float c;
+ float d;
+};
+
+struct N3 {
+ N1 n1;
+ N2 n2;
+};
+
+cbuffer nested {
+ N3 foo;
+} nest;
+
+struct TS {
+ int a;
+ int dead;
+};
+
+uniform TS s;
+
+uniform float uf1;
+uniform float uf2;
+uniform float ufDead3;
+uniform float ufDead4;
+
+uniform float2x2 dm22[10];
+
+struct deep1 {
+ float2 va[3];
+ bool b;
+};
+
+struct deep2 {
+ int i;
+ deep1 d1[4];
+};
+
+struct deep3 {
+ float4 iv4;
+ deep2 d2;
+ int3 v3;
+};
+
+
+
+
+uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];
+
+const bool control = true;
+
+void deadFunction()
+{
+ float3 v3 = ablock.deadMember1;
+ float4 v = anonDeadMember2;
+ float f = ufDead4;
+}
+
+void liveFunction2()
+{
+ float3 v = anonMember1;
+ float f = uf1;
+}
+
+tbuffer abl {
+ float foo;
+} arrBl;
+
+tbuffer abl2 {
+ float foo;
+} arrBl2;
+
+void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attributeFloat3, in float4 attributeFloat4, in float4x4 attributeMat4)
+{
+ liveFunction2();
+
+ if (! control)
+ deadFunction();
+
+ float f;
+ int i;
+ if (control) {
+ liveFunction2();
+ f = anonMember3.z;
+ f = s.a;
+ f = ablock.scalar;
+ f = m23[1].y + scalarAfterm23;
+ f = c_m23[1].y + c_scalarAfterm23;
+ f += scalarBeforeArray;
+ f += floatArray[2];
+ f += floatArray[4];
+ f += scalarAfterArray;
+ f += ablock.memfloat2.x;
+ f += ablock.memf1;
+ f += float(ablock.memf2);
+ f += ablock.memf3;
+ f += ablock.memfloat2a.y;
+ f += ablock.m22[i][1][0];
+ f += dm22[3][0][1];
+ f += m22[2][1].y;
+ f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;
+ f += deepA[i].d2.d1[2].va[1].x;
+ f += deepB[1].d2.d1[i].va[1].x;
+ f += deepB[i].d2.d1[i].va[1].x;
+ deep3 d = deepC[1];
+ deep3 da[2] = deepD;
+ } else
+ f = ufDead3;
+
+ f += arrBl.foo + arrBl.foo;
+ f += arrBl2.foo;
+
+ f += attributeFloat;
+ f += attributeFloat2.x;
+ f += attributeFloat3.x;
+ f += attributeFloat4.x;
+ f += attributeMat4[0][1];
+}
diff --git a/Test/hlsl.scope.frag b/Test/hlsl.scope.frag
index 0d8cc1a..a5309ca 100644
--- a/Test/hlsl.scope.frag
+++ b/Test/hlsl.scope.frag
@@ -1,4 +1,4 @@
-float4 PixelShaderFunction(float4 input) : COLOR0
+void PixelShaderFunction(float4 input) : COLOR0
{
int x;
x;
diff --git a/Test/hlsl.shapeConv.frag b/Test/hlsl.shapeConv.frag
index 1e6dec6..0485b4a 100644
--- a/Test/hlsl.shapeConv.frag
+++ b/Test/hlsl.shapeConv.frag
@@ -8,6 +8,25 @@
u = float(1);
u = float(2.0);
u = float(f);
+ float2 w = 2.0;
+ float V = 1;
+ float3 MyVal = V;
+
+ float3 foo;
+ foo > 4.0;
+ foo >= 5.0;
+ 6.0 < foo;
+ 7.0 <= foo;
+
+ v.x == v;
+ f != v;
+
+ float1 f1;
+
+ f1 == v;
+ v < f1;
+ f1.x;
+ f1.xxx;
return input;
}
diff --git a/Test/hlsl.string.frag b/Test/hlsl.string.frag
new file mode 100755
index 0000000..09885ff
--- /dev/null
+++ b/Test/hlsl.string.frag
@@ -0,0 +1,12 @@
+string s = "string1";
+string e = "";
+string bracket < string a = "nested" ; > ;
+string brackets < string b = "nest1" ; string c = "nest2" ; string d = "nest3" ; > ;
+string brackete1 < > ;
+string brackete2 < ; > ;
+string brackete3 < ; ; > ;
+
+float main(float f)
+{
+ return f;
+}
\ No newline at end of file
diff --git a/Test/hlsl.stringtoken.frag b/Test/hlsl.stringtoken.frag
new file mode 100644
index 0000000..fe785e6
--- /dev/null
+++ b/Test/hlsl.stringtoken.frag
@@ -0,0 +1,20 @@
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+};
+
+Texture2D TestTexture <
+ string TestAttribute1 = "TestAttribute";
+ string TestAttribute2 = "false";
+ int TestAttribute3 = 3;
+>;
+
+uniform float4 TestUF <string StrValue = "foo";>;
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT psout;
+ psout.Color = float4(0,0,0,1);
+ return psout;
+}
diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag
index c76f334..58cd524 100644
--- a/Test/hlsl.struct.frag
+++ b/Test/hlsl.struct.frag
@@ -16,7 +16,7 @@
float4 i;
} s2;
-struct {
+struct IN_S {
linear float4 a;
nointerpolation bool b;
noperspective centroid float1 c;
@@ -25,19 +25,19 @@
bool ff2 : packoffset(c0.y);
bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ;
float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
-} s4;
+};
float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]);
float3 ff6 : packoffset(c2.y) : register(s3[5]);
-float4 PixelShaderFunction(float4 input) : COLOR0
+float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
{
struct FS {
bool3 b3;
} s3;
s3 == s3;
- s2.i = s4.ff4;
+ s2.i = s.ff4;
return input;
}
\ No newline at end of file
diff --git a/Test/hlsl.structin.vert b/Test/hlsl.structin.vert
new file mode 100644
index 0000000..7eba552
--- /dev/null
+++ b/Test/hlsl.structin.vert
@@ -0,0 +1,14 @@
+struct VI {
+ float4 m[2];
+ uint2 coord;
+ linear float4 b;
+};
+
+VI main(float4 d, VI vi, float4 e) : SV_POSITION
+{
+ VI local;
+
+ local.b = vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e;
+
+ return local;
+}
\ No newline at end of file
diff --git a/Test/hlsl.void.frag b/Test/hlsl.void.frag
index 9bf06b7..950bbd7 100644
--- a/Test/hlsl.void.frag
+++ b/Test/hlsl.void.frag
@@ -1,8 +1,9 @@
void foo1() {}
void foo2(void) {}
-float4 PixelShaderFunction(float4 input) : COLOR0
+void PixelShaderFunction(float4 input) : COLOR0
{
foo1();
foo2();
+ return;
}
\ No newline at end of file
diff --git a/Test/remap.basic.dcefunc.frag b/Test/remap.basic.dcefunc.frag
new file mode 100644
index 0000000..714120a
--- /dev/null
+++ b/Test/remap.basic.dcefunc.frag
@@ -0,0 +1,11 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+vec3 dead_fn() { return vec3(0); }
+
+void main()
+{
+ outf4 = vec4(inf);
+}
diff --git a/Test/remap.basic.everything.frag b/Test/remap.basic.everything.frag
new file mode 100644
index 0000000..714120a
--- /dev/null
+++ b/Test/remap.basic.everything.frag
@@ -0,0 +1,11 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+vec3 dead_fn() { return vec3(0); }
+
+void main()
+{
+ outf4 = vec4(inf);
+}
diff --git a/Test/remap.basic.none.frag b/Test/remap.basic.none.frag
new file mode 100644
index 0000000..714120a
--- /dev/null
+++ b/Test/remap.basic.none.frag
@@ -0,0 +1,11 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+vec3 dead_fn() { return vec3(0); }
+
+void main()
+{
+ outf4 = vec4(inf);
+}
diff --git a/Test/remap.basic.strip.frag b/Test/remap.basic.strip.frag
new file mode 100644
index 0000000..714120a
--- /dev/null
+++ b/Test/remap.basic.strip.frag
@@ -0,0 +1,11 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+vec3 dead_fn() { return vec3(0); }
+
+void main()
+{
+ outf4 = vec4(inf);
+}
diff --git a/Test/remap.hlsl.sample.basic.everything.frag b/Test/remap.hlsl.sample.basic.everything.frag
new file mode 100644
index 0000000..03e83ef
--- /dev/null
+++ b/Test/remap.hlsl.sample.basic.everything.frag
@@ -0,0 +1,90 @@
+SamplerState g_sSamp : register(s0);
+uniform sampler2D g_sSamp2d
+{
+ AddressU = MIRROR;
+ AddressV = WRAP;
+ MinLOD = 0;
+ MaxLOD = 10;
+ MaxAnisotropy = 2;
+ MipLodBias = 0.2;
+}, g_sSamp2D_b;
+
+Texture1D g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct MemberTest
+{
+ int Sample; // in HLSL, method names are valid struct members.
+ int CalculateLevelOfDetail; // ...
+ int CalculateLevelOfDetailUnclamped; // ...
+ int Gather; // ...
+ int GetDimensions; // ...
+ int GetSamplePosition; // ...
+ int Load; // ...
+ int SampleBias; // ...
+ int SampleCmp; // ...
+ int SampleCmpLevelZero; // ...
+ int SampleGrad; // ...
+ int SampleLevel; // ...
+};
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+ float Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT psout;
+
+ MemberTest mtest;
+ mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
+ mtest.CalculateLevelOfDetailUnclamped = 1; // ...
+ mtest.Gather = 1; // ...
+ mtest.GetDimensions = 1; // ...
+ mtest.GetSamplePosition = 1; // ...
+ mtest.Load = 1; // ...
+ mtest.Sample = 1; // ...
+ mtest.SampleBias = 1; // ...
+ mtest.SampleCmp = 1; // ...
+ mtest.SampleCmpLevelZero = 1; // ...
+ mtest.SampleGrad = 1; // ...
+ mtest.SampleLevel = 1; // ...
+
+ float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
+ int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
+ uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
+
+ float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
+ int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
+ uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
+
+ float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ psout.Color = 1.0;
+ psout.Depth = 1.0;
+
+ return psout;
+}
diff --git a/Test/remap.hlsl.sample.basic.none.frag b/Test/remap.hlsl.sample.basic.none.frag
new file mode 100644
index 0000000..03e83ef
--- /dev/null
+++ b/Test/remap.hlsl.sample.basic.none.frag
@@ -0,0 +1,90 @@
+SamplerState g_sSamp : register(s0);
+uniform sampler2D g_sSamp2d
+{
+ AddressU = MIRROR;
+ AddressV = WRAP;
+ MinLOD = 0;
+ MaxLOD = 10;
+ MaxAnisotropy = 2;
+ MipLodBias = 0.2;
+}, g_sSamp2D_b;
+
+Texture1D g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct MemberTest
+{
+ int Sample; // in HLSL, method names are valid struct members.
+ int CalculateLevelOfDetail; // ...
+ int CalculateLevelOfDetailUnclamped; // ...
+ int Gather; // ...
+ int GetDimensions; // ...
+ int GetSamplePosition; // ...
+ int Load; // ...
+ int SampleBias; // ...
+ int SampleCmp; // ...
+ int SampleCmpLevelZero; // ...
+ int SampleGrad; // ...
+ int SampleLevel; // ...
+};
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+ float Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT psout;
+
+ MemberTest mtest;
+ mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
+ mtest.CalculateLevelOfDetailUnclamped = 1; // ...
+ mtest.Gather = 1; // ...
+ mtest.GetDimensions = 1; // ...
+ mtest.GetSamplePosition = 1; // ...
+ mtest.Load = 1; // ...
+ mtest.Sample = 1; // ...
+ mtest.SampleBias = 1; // ...
+ mtest.SampleCmp = 1; // ...
+ mtest.SampleCmpLevelZero = 1; // ...
+ mtest.SampleGrad = 1; // ...
+ mtest.SampleLevel = 1; // ...
+
+ float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
+ int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
+ uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
+
+ float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
+ int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
+ uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
+
+ float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ psout.Color = 1.0;
+ psout.Depth = 1.0;
+
+ return psout;
+}
diff --git a/Test/remap.hlsl.sample.basic.strip.frag b/Test/remap.hlsl.sample.basic.strip.frag
new file mode 100644
index 0000000..03e83ef
--- /dev/null
+++ b/Test/remap.hlsl.sample.basic.strip.frag
@@ -0,0 +1,90 @@
+SamplerState g_sSamp : register(s0);
+uniform sampler2D g_sSamp2d
+{
+ AddressU = MIRROR;
+ AddressV = WRAP;
+ MinLOD = 0;
+ MaxLOD = 10;
+ MaxAnisotropy = 2;
+ MipLodBias = 0.2;
+}, g_sSamp2D_b;
+
+Texture1D g_tTex1df4a : register(t1);
+
+uniform Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct MemberTest
+{
+ int Sample; // in HLSL, method names are valid struct members.
+ int CalculateLevelOfDetail; // ...
+ int CalculateLevelOfDetailUnclamped; // ...
+ int Gather; // ...
+ int GetDimensions; // ...
+ int GetSamplePosition; // ...
+ int Load; // ...
+ int SampleBias; // ...
+ int SampleCmp; // ...
+ int SampleCmpLevelZero; // ...
+ int SampleGrad; // ...
+ int SampleLevel; // ...
+};
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+ float Depth : SV_Depth;
+};
+
+PS_OUTPUT main()
+{
+ PS_OUTPUT psout;
+
+ MemberTest mtest;
+ mtest.CalculateLevelOfDetail = 1; // in HLSL, method names are valid struct members.
+ mtest.CalculateLevelOfDetailUnclamped = 1; // ...
+ mtest.Gather = 1; // ...
+ mtest.GetDimensions = 1; // ...
+ mtest.GetSamplePosition = 1; // ...
+ mtest.Load = 1; // ...
+ mtest.Sample = 1; // ...
+ mtest.SampleBias = 1; // ...
+ mtest.SampleCmp = 1; // ...
+ mtest.SampleCmpLevelZero = 1; // ...
+ mtest.SampleGrad = 1; // ...
+ mtest.SampleLevel = 1; // ...
+
+ float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1);
+ int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2);
+ uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3);
+
+ float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2));
+ int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4));
+ uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6));
+
+ float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3));
+ int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6));
+ uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9));
+
+ psout.Color = 1.0;
+ psout.Depth = 1.0;
+
+ return psout;
+}
diff --git a/Test/remap.hlsl.templatetypes.everything.frag b/Test/remap.hlsl.templatetypes.everything.frag
new file mode 100644
index 0000000..bacd6f5
--- /dev/null
+++ b/Test/remap.hlsl.templatetypes.everything.frag
@@ -0,0 +1,47 @@
+
+float4 main(float4 input) : COLOR0
+{
+ vector r00 = float4(1,2,3,4); // vector means float4
+ float4 r01 = vector(2,3,4,5); // vector means float4
+
+ vector<bool, 1> r12 = bool1(false);
+ vector<int, 1> r13 = int1(1);
+ vector<float, 1> r14 = float1(1);
+ vector<double, 1> r15 = double1(1);
+ vector<uint, 1> r16 = uint1(1);
+
+ vector<bool, 2> r20 = bool2(false, true);
+ vector<int, 2> r21 = int2(1,2);
+ vector<float, 2> r22 = float2(1,2);
+ vector<double, 2> r23 = double2(1,2);
+ vector<uint, 2> r24 = uint2(1,2);
+
+ vector<bool, 3> r30 = bool3(false, true, true);
+ vector<int, 3> r31 = int3(1,2,3);
+ vector<float, 3> r32 = float3(1,2,3);
+ vector<double, 3> r33 = double3(1,2,3);
+ vector<uint, 3> r34 = uint3(1,2,3);
+
+ vector<bool, 4> r40 = bool4(false, true, true, false);
+ vector<int, 4> r41 = int4(1,2,3,4);
+ vector<float, 4> r42 = float4(1,2,3,4);
+ vector<double, 4> r43 = double4(1,2,3,4);
+ vector<uint, 4> r44 = uint4(1,2,3,4);
+
+ matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
+ float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
+
+ // matrix<bool, 2, 3> r60 = bool2x3(false, true, false, true, false, true); // TODO:
+ matrix<float, 2, 3> r61 = float2x3(1,2,3,4,5,6);
+ matrix<float, 3, 2> r62 = float3x2(1,2,3,4,5,6);
+ // matrix<float, 4, 1> r63 = float4x1(1,2,3,4); // TODO:
+ // matrix<float, 1, 4> r64 = float1x4(1,2,3,4); // TODO:
+ matrix<float, 4, 2> r65 = float4x2(1,2,3,4,5,6,7,8);
+ matrix<float, 4, 3> r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12);
+
+ // TODO: bool mats
+ // TODO: int mats
+
+ return 0.0;
+}
+
diff --git a/Test/remap.hlsl.templatetypes.none.frag b/Test/remap.hlsl.templatetypes.none.frag
new file mode 100644
index 0000000..bacd6f5
--- /dev/null
+++ b/Test/remap.hlsl.templatetypes.none.frag
@@ -0,0 +1,47 @@
+
+float4 main(float4 input) : COLOR0
+{
+ vector r00 = float4(1,2,3,4); // vector means float4
+ float4 r01 = vector(2,3,4,5); // vector means float4
+
+ vector<bool, 1> r12 = bool1(false);
+ vector<int, 1> r13 = int1(1);
+ vector<float, 1> r14 = float1(1);
+ vector<double, 1> r15 = double1(1);
+ vector<uint, 1> r16 = uint1(1);
+
+ vector<bool, 2> r20 = bool2(false, true);
+ vector<int, 2> r21 = int2(1,2);
+ vector<float, 2> r22 = float2(1,2);
+ vector<double, 2> r23 = double2(1,2);
+ vector<uint, 2> r24 = uint2(1,2);
+
+ vector<bool, 3> r30 = bool3(false, true, true);
+ vector<int, 3> r31 = int3(1,2,3);
+ vector<float, 3> r32 = float3(1,2,3);
+ vector<double, 3> r33 = double3(1,2,3);
+ vector<uint, 3> r34 = uint3(1,2,3);
+
+ vector<bool, 4> r40 = bool4(false, true, true, false);
+ vector<int, 4> r41 = int4(1,2,3,4);
+ vector<float, 4> r42 = float4(1,2,3,4);
+ vector<double, 4> r43 = double4(1,2,3,4);
+ vector<uint, 4> r44 = uint4(1,2,3,4);
+
+ matrix r50 = float4x4(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
+ float4x4 r51 = matrix(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // matrix means float4x4
+
+ // matrix<bool, 2, 3> r60 = bool2x3(false, true, false, true, false, true); // TODO:
+ matrix<float, 2, 3> r61 = float2x3(1,2,3,4,5,6);
+ matrix<float, 3, 2> r62 = float3x2(1,2,3,4,5,6);
+ // matrix<float, 4, 1> r63 = float4x1(1,2,3,4); // TODO:
+ // matrix<float, 1, 4> r64 = float1x4(1,2,3,4); // TODO:
+ matrix<float, 4, 2> r65 = float4x2(1,2,3,4,5,6,7,8);
+ matrix<float, 4, 3> r66 = float4x3(1,2,3,4,5,6,7,8,9,10,11,12);
+
+ // TODO: bool mats
+ // TODO: int mats
+
+ return 0.0;
+}
+
diff --git a/Test/remap.if.everything.frag b/Test/remap.if.everything.frag
new file mode 100644
index 0000000..3fedfc4
--- /dev/null
+++ b/Test/remap.if.everything.frag
@@ -0,0 +1,12 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+void main()
+{
+ if (inf > 2.0)
+ outf4 = vec4(inf);
+ else
+ outf4 = vec4(inf + -.5);
+}
diff --git a/Test/remap.if.none.frag b/Test/remap.if.none.frag
new file mode 100644
index 0000000..3fedfc4
--- /dev/null
+++ b/Test/remap.if.none.frag
@@ -0,0 +1,12 @@
+#version 450
+
+in float inf;
+out vec4 outf4;
+
+void main()
+{
+ if (inf > 2.0)
+ outf4 = vec4(inf);
+ else
+ outf4 = vec4(inf + -.5);
+}
diff --git a/Test/remap.literal64.everything.spv b/Test/remap.literal64.everything.spv
new file mode 100644
index 0000000..88103c4
--- /dev/null
+++ b/Test/remap.literal64.everything.spv
Binary files differ
diff --git a/Test/remap.literal64.none.spv b/Test/remap.literal64.none.spv
new file mode 100644
index 0000000..88103c4
--- /dev/null
+++ b/Test/remap.literal64.none.spv
Binary files differ
diff --git a/Test/remap.similar_1a.everything.frag b/Test/remap.similar_1a.everything.frag
new file mode 100644
index 0000000..6eddbc5
--- /dev/null
+++ b/Test/remap.similar_1a.everything.frag
@@ -0,0 +1,29 @@
+#version 450
+
+in float inf;
+in flat ivec4 ini4;
+out vec4 outf4;
+
+float Test1(int bound)
+{
+ float r = 0;
+ for (int x=0; x<bound; ++x)
+ r += 0.5;
+ return r;
+}
+
+float Test2(int bound)
+{
+ if (bound > 2)
+ return Test1(bound);
+ else
+ return float(bound * 2 +
+ ini4.y * ini4.z +
+ ini4.x);
+}
+
+void main()
+{
+ outf4 = vec4(Test1(int(inf)) +
+ Test2(int(inf)));
+}
diff --git a/Test/remap.similar_1a.none.frag b/Test/remap.similar_1a.none.frag
new file mode 100644
index 0000000..6eddbc5
--- /dev/null
+++ b/Test/remap.similar_1a.none.frag
@@ -0,0 +1,29 @@
+#version 450
+
+in float inf;
+in flat ivec4 ini4;
+out vec4 outf4;
+
+float Test1(int bound)
+{
+ float r = 0;
+ for (int x=0; x<bound; ++x)
+ r += 0.5;
+ return r;
+}
+
+float Test2(int bound)
+{
+ if (bound > 2)
+ return Test1(bound);
+ else
+ return float(bound * 2 +
+ ini4.y * ini4.z +
+ ini4.x);
+}
+
+void main()
+{
+ outf4 = vec4(Test1(int(inf)) +
+ Test2(int(inf)));
+}
diff --git a/Test/remap.similar_1b.everything.frag b/Test/remap.similar_1b.everything.frag
new file mode 100644
index 0000000..4600945
--- /dev/null
+++ b/Test/remap.similar_1b.everything.frag
@@ -0,0 +1,30 @@
+#version 450
+
+out vec4 outf4;
+in flat ivec4 ini4;
+in float inf;
+
+float Test1(int bound)
+{
+ float r = 0;
+ for (int x=0; x<bound; ++x)
+ r += 0.5;
+ r += 0.2;
+ return r;
+}
+
+float Test2(int bound)
+{
+ if (bound > 2) {
+ return Test1(bound * 2);
+ } else
+ return float(bound * 4 +
+ ini4.y * ini4.z +
+ ini4.x);
+}
+
+void main()
+{
+ outf4 = vec4(Test1(int(inf)) +
+ Test2(int(inf)));
+}
diff --git a/Test/remap.similar_1b.none.frag b/Test/remap.similar_1b.none.frag
new file mode 100644
index 0000000..4600945
--- /dev/null
+++ b/Test/remap.similar_1b.none.frag
@@ -0,0 +1,30 @@
+#version 450
+
+out vec4 outf4;
+in flat ivec4 ini4;
+in float inf;
+
+float Test1(int bound)
+{
+ float r = 0;
+ for (int x=0; x<bound; ++x)
+ r += 0.5;
+ r += 0.2;
+ return r;
+}
+
+float Test2(int bound)
+{
+ if (bound > 2) {
+ return Test1(bound * 2);
+ } else
+ return float(bound * 4 +
+ ini4.y * ini4.z +
+ ini4.x);
+}
+
+void main()
+{
+ outf4 = vec4(Test1(int(inf)) +
+ Test2(int(inf)));
+}
diff --git a/Test/remap.switch.everything.frag b/Test/remap.switch.everything.frag
new file mode 100644
index 0000000..140c079
--- /dev/null
+++ b/Test/remap.switch.everything.frag
@@ -0,0 +1,16 @@
+#version 450
+
+precision highp float;
+
+layout(location = 0) out mediump vec4 FragColor;
+layout(location = 0) in vec4 in0;
+
+void main()
+{
+ switch(int(in0.w)) {
+ case 0: FragColor = vec4(in0.x + 0); break;
+ case 1: FragColor = vec4(in0.y + 1); break;
+ case 2: FragColor = vec4(in0.z + 2); break;
+ default: FragColor = vec4(-1);
+ }
+}
diff --git a/Test/remap.switch.none.frag b/Test/remap.switch.none.frag
new file mode 100644
index 0000000..140c079
--- /dev/null
+++ b/Test/remap.switch.none.frag
@@ -0,0 +1,16 @@
+#version 450
+
+precision highp float;
+
+layout(location = 0) out mediump vec4 FragColor;
+layout(location = 0) in vec4 in0;
+
+void main()
+{
+ switch(int(in0.w)) {
+ case 0: FragColor = vec4(in0.x + 0); break;
+ case 1: FragColor = vec4(in0.y + 1); break;
+ case 2: FragColor = vec4(in0.z + 2); break;
+ default: FragColor = vec4(-1);
+ }
+}
diff --git a/Test/remap.uniformarray.everything.frag b/Test/remap.uniformarray.everything.frag
new file mode 100644
index 0000000..4f642e6
--- /dev/null
+++ b/Test/remap.uniformarray.everything.frag
@@ -0,0 +1,17 @@
+#version 140
+
+uniform sampler2D texSampler2D;
+in vec3 inColor;
+in vec4 color[6];
+in float alpha[16];
+
+void main()
+{
+ vec4 texColor = color[1] + color[1];
+
+ texColor.xyz += inColor;
+
+ texColor.a += alpha[12];
+
+ gl_FragColor = texColor;
+}
diff --git a/Test/remap.uniformarray.none.frag b/Test/remap.uniformarray.none.frag
new file mode 100644
index 0000000..4f642e6
--- /dev/null
+++ b/Test/remap.uniformarray.none.frag
@@ -0,0 +1,17 @@
+#version 140
+
+uniform sampler2D texSampler2D;
+in vec3 inColor;
+in vec4 color[6];
+in float alpha[16];
+
+void main()
+{
+ vec4 texColor = color[1] + color[1];
+
+ texColor.xyz += inColor;
+
+ texColor.a += alpha[12];
+
+ gl_FragColor = texColor;
+}
diff --git a/Test/runtests b/Test/runtests
index 5e777a8..1851338 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -31,6 +31,8 @@
echo Running reflection...
$EXE -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out
diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1
+$EXE -D -e flizv -l -q -C -V hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out
+diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1
#
# multi-threaded test
diff --git a/Test/spv.450.tesc b/Test/spv.450.tesc
index 0f8ec5c..c3719f9 100644
--- a/Test/spv.450.tesc
+++ b/Test/spv.450.tesc
@@ -18,3 +18,15 @@
void main()
{
}
+
+layout(location = 2) patch out SingleBlock {
+ highp float bMem1; // should not see a location decoration
+ highp float bMem2;
+ S s; // should see a patch decoration
+} singleBlock;
+
+layout(location = 20) patch out bn {
+ vec4 v1; // location 20
+ layout(location = 24) vec4 v2; // location 24
+ vec4 v3; // location 25
+};
\ No newline at end of file
diff --git a/Test/spv.accessChain.frag b/Test/spv.accessChain.frag
index 41ec0ca..c7f805b 100644
--- a/Test/spv.accessChain.frag
+++ b/Test/spv.accessChain.frag
@@ -71,7 +71,7 @@
void GetColor13(const S i, int comp)
{
- // OutColor.zy[comp] += i.color.x; // not yet supported
+ OutColor.zy[comp] += i.color.x;
}
void main()
diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag
index 527bfef..8021b7e 100644
--- a/Test/spv.int64.frag
+++ b/Test/spv.int64.frag
@@ -225,4 +225,40 @@
// notEqual()
bv = notEqual(u64v, u64vec3(u64));
bv.xy = notEqual(i64v, i64vec2(i64));
-}
\ No newline at end of file
+}
+
+// Type conversion for specialization constant
+layout(constant_id = 100) const int64_t si64 = -10L;
+layout(constant_id = 101) const uint64_t su64 = 20UL;
+layout(constant_id = 102) const int si = -5;
+layout(constant_id = 103) const uint su = 4;
+layout(constant_id = 104) const bool sb = true;
+
+// bool <-> int64/uint64
+const bool i64_to_b = bool(si64);
+const bool u64_to_b = bool(su64);
+const int64_t b_to_i64 = int64_t(sb);
+const uint64_t b_to_u64 = uint64_t(sb);
+
+// int <-> int64
+const int i64_to_i = int(si64);
+const int64_t i_to_i64 = int64_t(si);
+
+// uint <-> uint64
+const uint u64_to_u = uint(su64);
+const uint64_t u_to_u64 = uint64_t(su);
+
+// int64 <-> uint64
+const int64_t u64_to_i64 = int64_t(su64);
+const uint64_t i64_to_u64 = uint64_t(si64);
+
+// int <-> uint64
+const int u64_to_i = int(su64);
+const uint64_t i_to_u64 = uint64_t(si);
+
+// uint <-> int64
+const uint i64_to_u = uint(si64);
+const int64_t u_to_i64 = int64_t(su);
+
+#define UINT64_MAX 18446744073709551615ul
+uint64_t u64Max = UINT64_MAX;
diff --git a/Test/spv.merge-unreachable.frag b/Test/spv.merge-unreachable.frag
index 12f57cd..a650cd1 100644
--- a/Test/spv.merge-unreachable.frag
+++ b/Test/spv.merge-unreachable.frag
@@ -1,4 +1,5 @@
#version 450
+precision mediump int; precision highp float;
layout(location=1) in highp vec4 v;
void main (void)
{
diff --git a/Test/spv.multiStruct.comp b/Test/spv.multiStruct.comp
new file mode 100644
index 0000000..7462da4
--- /dev/null
+++ b/Test/spv.multiStruct.comp
@@ -0,0 +1,48 @@
+#version 450 core
+
+struct MyStruct
+{
+ vec2 foo[2];
+ bool sb;
+};
+
+layout(binding = 0, std430) buffer SSBO0
+{
+ MyStruct a;
+} inBuf;
+
+layout(binding = 1, std430) buffer SSBO1
+{
+ MyStruct b;
+} outBuf;
+
+layout(binding = 2, std140) uniform UBO
+{
+ MyStruct c;
+} uBuf;
+
+struct Nested {
+ float f;
+ MyStruct S[2];
+};
+
+layout(binding = 2, std140) uniform UBON
+{
+ Nested N1;
+} uBufN;
+
+layout(binding = 1, std430) buffer SSBO1N
+{
+ Nested N2;
+} outBufN;
+
+void main()
+{
+ MyStruct t = inBuf.a;
+ outBuf.b = t;
+ t = uBuf.c;
+ outBuf.b = t;
+
+ Nested n = uBufN.N1;
+ outBufN.N2 = n;
+}
diff --git a/Test/spv.multiStructFuncall.frag b/Test/spv.multiStructFuncall.frag
new file mode 100755
index 0000000..7f9968d
--- /dev/null
+++ b/Test/spv.multiStructFuncall.frag
@@ -0,0 +1,21 @@
+#version 450
+
+struct S { mat4 m; };
+buffer blockName { S s1; }; // need an S with decoration
+S s2; // no decorations on S
+
+void fooConst(const in S s) { }
+void foo(in S s) { }
+void fooOut(inout S s) { }
+
+void main()
+{
+ fooConst(s1);
+ fooConst(s2);
+
+ foo(s1);
+ foo(s2);
+
+ fooOut(s1);
+ fooOut(s2);
+}
\ No newline at end of file
diff --git a/Test/spv.specConstantOperations.vert b/Test/spv.specConstantOperations.vert
index b5e46ad..f67561c 100644
--- a/Test/spv.specConstantOperations.vert
+++ b/Test/spv.specConstantOperations.vert
@@ -4,12 +4,16 @@
layout(constant_id = 201) const int sp_int = 10;
layout(constant_id = 202) const uint sp_uint = 100;
layout(constant_id = 203) const int sp_sint = -10;
-
+layout(constant_id = 204) const double sp_double = 2.718281828459;
//
// Scalars
//
+// float <-> double conversion
+const float float_from_double = float(sp_double);
+const double double_from_float = double(sp_float);
+
// uint/int <-> bool conversion
const bool bool_from_int = bool(sp_int);
const bool bool_from_uint = bool(sp_uint);
diff --git a/Test/spv.structAssignment.frag b/Test/spv.structAssignment.frag
index 72984f2..ca95ec3 100644
--- a/Test/spv.structAssignment.frag
+++ b/Test/spv.structAssignment.frag
@@ -1,5 +1,7 @@
#version 140
+precision mediump int;
+
uniform sampler2D samp2D;
in mediump vec2 coord;
diff --git a/Test/spv.uint.frag b/Test/spv.uint.frag
index 92a8f96..853de7c 100644
--- a/Test/spv.uint.frag
+++ b/Test/spv.uint.frag
@@ -95,5 +95,8 @@
if ((mask1 ^ mask4) == 0xA10u)
count *= 7; // 341413380
- c += uvec4(count);
+ c += uvec4(count);
+
+ #define UINT_MAX 4294967295u
+ c.x += UINT_MAX;
}
diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
index f431cc1..6325fd4 100644
--- a/glslang/CMakeLists.txt
+++ b/glslang/CMakeLists.txt
@@ -14,6 +14,7 @@
MachineIndependent/Initialize.cpp
MachineIndependent/IntermTraverse.cpp
MachineIndependent/Intermediate.cpp
+ MachineIndependent/ParseContextBase.cpp
MachineIndependent/ParseHelper.cpp
MachineIndependent/PoolAlloc.cpp
MachineIndependent/RemoveTree.cpp
@@ -54,6 +55,7 @@
MachineIndependent/glslang_tab.cpp.h
MachineIndependent/gl_types.h
MachineIndependent/Initialize.h
+ MachineIndependent/LiveTraverser.h
MachineIndependent/localintermediate.h
MachineIndependent/ParseHelper.h
MachineIndependent/reflection.h
diff --git a/glslang/GenericCodeGen/Link.cpp b/glslang/GenericCodeGen/Link.cpp
index 8160999..8da88bd 100644
--- a/glslang/GenericCodeGen/Link.cpp
+++ b/glslang/GenericCodeGen/Link.cpp
@@ -46,7 +46,7 @@
public:
TGenericLinker(EShExecutable e, int dOptions) : TLinker(e, infoSink), debugOptions(dOptions) { }
bool link(TCompilerList&, TUniformMap*) { return true; }
- void getAttributeBindings(ShBindingTable const **) const { }
+ void getAttributeBindings(ShBindingTable const **) const { }
TInfoSink infoSink;
int debugOptions;
};
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 7e12c55..64ef80c 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -55,6 +55,10 @@
EbtSampler,
EbtStruct,
EbtBlock,
+
+ // HLSL types that live only temporarily.
+ EbtString,
+
EbtNumTypes
};
@@ -196,6 +200,11 @@
EbvBaryCoordPullModel,
#endif
+ // HLSL built-ins that live only temporarily, until they get remapped
+ // to one of the above.
+ EbvFragDepthGreater,
+ EbvFragDepthLesser,
+
EbvLast
};
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
index 4c04ae3..636645e 100644
--- a/glslang/Include/Common.h
+++ b/glslang/Include/Common.h
@@ -89,8 +89,8 @@
#include <list>
#include <algorithm>
#include <string>
-#include <stdio.h>
-#include <assert.h>
+#include <cstdio>
+#include <cassert>
#include "PoolAlloc.h"
@@ -99,11 +99,11 @@
//
#define POOL_ALLOCATOR_NEW_DELETE(A) \
void* operator new(size_t s) { return (A).allocate(s); } \
- void* operator new(size_t, void *_Where) { return (_Where); } \
+ void* operator new(size_t, void *_Where) { return (_Where); } \
void operator delete(void*) { } \
void operator delete(void *, void *) { } \
void* operator new[](size_t s) { return (A).allocate(s); } \
- void* operator new[](size_t, void *_Where) { return (_Where); } \
+ void* operator new[](size_t, void *_Where) { return (_Where); } \
void operator delete[](void*) { } \
void operator delete[](void *, void *) { }
diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h
index 5862e5d..aa02f91 100644
--- a/glslang/Include/InfoSink.h
+++ b/glslang/Include/InfoSink.h
@@ -36,7 +36,7 @@
#define _INFOSINK_INCLUDED_
#include "../Include/Common.h"
-#include <math.h>
+#include <cmath>
namespace glslang {
diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h
index c3bebc6..635be79 100644
--- a/glslang/Include/PoolAlloc.h
+++ b/glslang/Include/PoolAlloc.h
@@ -61,13 +61,13 @@
// class as the allocator (second) template argument.
//
-#include <stddef.h>
-#include <string.h>
+#include <cstddef>
+#include <cstring>
#include <vector>
namespace glslang {
-// If we are using guard blocks, we must track each indivual
+// If we are using guard blocks, we must track each individual
// allocation. If we aren't using guard blocks, these
// never get instantiated, so won't have any impact.
//
@@ -297,10 +297,10 @@
pointer allocate(size_type n, const void*) {
return reinterpret_cast<pointer>(getAllocator().allocate(n * sizeof(T))); }
- void deallocate(void*, size_type) { }
+ void deallocate(void*, size_type) { }
void deallocate(pointer, size_type) { }
- pointer _Charalloc(size_t n) {
+ pointer _Charalloc(size_t n) {
return reinterpret_cast<pointer>(getAllocator().allocate(n)); }
void construct(pointer p, const T& val) { new ((void *)p) T(val); }
diff --git a/glslang/Include/ShHandle.h b/glslang/Include/ShHandle.h
index fee6413..bfc97db 100644
--- a/glslang/Include/ShHandle.h
+++ b/glslang/Include/ShHandle.h
@@ -123,8 +123,8 @@
haveReturnableObjectCode(false),
appAttributeBindings(0),
fixedAttributeBindings(0),
- excludedAttributes(0),
- excludedCount(0),
+ excludedAttributes(0),
+ excludedCount(0),
uniformBindings(0) { }
virtual TLinker* getAsLinker() { return this; }
virtual ~TLinker() { }
@@ -132,8 +132,8 @@
virtual bool link(THandleList&) { return false; }
virtual void setAppAttributeBindings(const ShBindingTable* t) { appAttributeBindings = t; }
virtual void setFixedAttributeBindings(const ShBindingTable* t) { fixedAttributeBindings = t; }
- virtual void getAttributeBindings(ShBindingTable const **t) const = 0;
- virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; }
+ virtual void getAttributeBindings(ShBindingTable const **t) const = 0;
+ virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; }
virtual ShBindingTable* getUniformBindings() const { return uniformBindings; }
virtual const void* getObjectCode() const { return 0; } // a real compiler would be returning object code here
virtual TInfoSink& getInfoSink() { return infoSink; }
@@ -145,8 +145,8 @@
const ShBindingTable* appAttributeBindings;
const ShBindingTable* fixedAttributeBindings;
- const int* excludedAttributes;
- int excludedCount;
+ const int* excludedAttributes;
+ int excludedCount;
ShBindingTable* uniformBindings; // created by the linker
};
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 1ea9f25..6c2ded8 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -1075,7 +1075,7 @@
qualifier.clear();
qualifier.storage = q;
qualifier.precision = p;
- assert(p >= 0 && p <= EpqHigh);
+ assert(p >= EpqNone && p <= EpqHigh);
}
// for turning a TPublicType into a TType, using a shallow copy
explicit TType(const TPublicType& p) :
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index bcaf087..32969be 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run).
-#define GLSLANG_REVISION "SPIRV99.1383"
-#define GLSLANG_DATE "04-Aug-2016"
+#define GLSLANG_REVISION "Overload400-PrecQual.1502"
+#define GLSLANG_DATE "19-Sep-2016"
diff --git a/glslang/MachineIndependent/InfoSink.cpp b/glslang/MachineIndependent/InfoSink.cpp
index 2e88882..79acba8 100644
--- a/glslang/MachineIndependent/InfoSink.cpp
+++ b/glslang/MachineIndependent/InfoSink.cpp
@@ -34,15 +34,19 @@
#include "../Include/InfoSink.h"
-#include <string.h>
+#include <cstring>
namespace glslang {
-void TInfoSinkBase::append(const char* s)
+void TInfoSinkBase::append(const char* s)
{
if (outputStream & EString) {
- checkMem(strlen(s));
- sink.append(s);
+ if (s == nullptr)
+ sink.append("(null)");
+ else {
+ checkMem(strlen(s));
+ sink.append(s);
+ }
}
//#ifdef _WIN32
@@ -54,10 +58,10 @@
fprintf(stdout, "%s", s);
}
-void TInfoSinkBase::append(int count, char c)
+void TInfoSinkBase::append(int count, char c)
{
if (outputStream & EString) {
- checkMem(count);
+ checkMem(count);
sink.append(count, c);
}
@@ -74,10 +78,10 @@
fprintf(stdout, "%c", c);
}
-void TInfoSinkBase::append(const TPersistString& t)
+void TInfoSinkBase::append(const TPersistString& t)
{
if (outputStream & EString) {
- checkMem(t.size());
+ checkMem(t.size());
sink.append(t);
}
@@ -93,7 +97,7 @@
void TInfoSinkBase::append(const TString& t)
{
if (outputStream & EString) {
- checkMem(t.size());
+ checkMem(t.size());
sink.append(t.c_str());
}
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 0323c1b..6d2e9c0 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1460,15 +1460,15 @@
"uvec3 usubBorrow(highp uvec3, highp uvec3, out lowp uvec3 borrow);"
"uvec4 usubBorrow(highp uvec4, highp uvec4, out lowp uvec4 borrow);"
- "void umulExtended(highp uint, highp uint, highp out uint, out highp uint lsb);"
- "void umulExtended(highp uvec2, highp uvec2, highp out uvec2, out highp uvec2 lsb);"
- "void umulExtended(highp uvec3, highp uvec3, highp out uvec3, out highp uvec3 lsb);"
- "void umulExtended(highp uvec4, highp uvec4, highp out uvec4, out highp uvec4 lsb);"
+ "void umulExtended(highp uint, highp uint, out highp uint, out highp uint lsb);"
+ "void umulExtended(highp uvec2, highp uvec2, out highp uvec2, out highp uvec2 lsb);"
+ "void umulExtended(highp uvec3, highp uvec3, out highp uvec3, out highp uvec3 lsb);"
+ "void umulExtended(highp uvec4, highp uvec4, out highp uvec4, out highp uvec4 lsb);"
- "void imulExtended(highp int, highp int, highp out int, out highp int lsb);"
- "void imulExtended(highp ivec2, highp ivec2, highp out ivec2, out highp ivec2 lsb);"
- "void imulExtended(highp ivec3, highp ivec3, highp out ivec3, out highp ivec3 lsb);"
- "void imulExtended(highp ivec4, highp ivec4, highp out ivec4, out highp ivec4 lsb);"
+ "void imulExtended(highp int, highp int, out highp int, out highp int lsb);"
+ "void imulExtended(highp ivec2, highp ivec2, out highp ivec2, out highp ivec2 lsb);"
+ "void imulExtended(highp ivec3, highp ivec3, out highp ivec3, out highp ivec3 lsb);"
+ "void imulExtended(highp ivec4, highp ivec4, out highp ivec4, out highp ivec4 lsb);"
" int bitfieldReverse(highp int);"
"ivec2 bitfieldReverse(highp ivec2);"
@@ -2638,10 +2638,10 @@
);
stageBuiltins[EShLangFragment].append( // GL_OES_sample_variables
- "flat lowp in int gl_SampleID;"
- " mediump in vec2 gl_SamplePosition;"
- "flat highp in int gl_SampleMaskIn[];"
- " highp out int gl_SampleMask[];"
+ "flat in lowp int gl_SampleID;"
+ " in mediump vec2 gl_SamplePosition;"
+ "flat in highp int gl_SampleMaskIn[];"
+ " out highp int gl_SampleMask[];"
"uniform lowp int gl_NumSamples;"
);
}
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index be828e9..677cef3 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -44,7 +44,7 @@
#include "SymbolTable.h"
#include "propagateNoContraction.h"
-#include <float.h>
+#include <cfloat>
namespace glslang {
@@ -118,6 +118,10 @@
return 0;
}
+ // Convert the children's type shape to be compatible.
+ right = addShapeConversion(op, left->getType(), right);
+ left = addShapeConversion(op, right->getType(), left);
+
//
// Need a new node holding things together. Make
// one and promote it to the right type.
@@ -270,7 +274,8 @@
if (newType != EbtVoid) {
child = addConversion(op, TType(newType, EvqTemporary, child->getVectorSize(),
child->getMatrixCols(),
- child->getMatrixRows()),
+ child->getMatrixRows(),
+ child->isVector()),
child);
if (child == 0)
return 0;
@@ -520,7 +525,7 @@
if (type.getBasicType() == node->getType().getBasicType())
return node;
- if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType()))
+ if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op))
promoteTo = type.getBasicType();
else
return 0;
@@ -694,6 +699,13 @@
// some operations don't do this
switch (op) {
case EOpAssign:
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
+ case EOpEqual:
+ case EOpNotEqual:
+ case EOpFunctionCall:
break;
default:
return node;
@@ -705,12 +717,13 @@
return node;
// The new node that handles the conversion
- TIntermTyped* conversionNode = node;
TOperator constructorOp = mapTypeToConstructorOp(type);
- // scalar -> smeared -> vector
- if (type.isVector() && node->getType().isScalar())
- return setAggregateOperator(node, constructorOp, type, node->getLoc());
+ // scalar -> smeared -> vector, or
+ // bigger vector -> smaller vector or scalar
+ if ((type.isVector() && node->getType().isScalar()) ||
+ (node->getVectorSize() > type.getVectorSize() && type.isVector()))
+ return setAggregateOperator(makeAggregate(node), constructorOp, type, node->getLoc());
return node;
}
@@ -719,11 +732,39 @@
// See if the 'from' type is allowed to be implicitly converted to the
// 'to' type. This is not about vector/array/struct, only about basic type.
//
-bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to) const
+bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op) const
{
if (profile == EEsProfile || version == 110)
return false;
+ // TODO: Move more policies into language-specific handlers.
+ // Some languages allow more general (or potentially, more specific) conversions under some conditions.
+ if (source == EShSourceHlsl) {
+ const bool fromConvertable = (from == EbtFloat || from == EbtDouble || from == EbtInt || from == EbtUint || from == EbtBool);
+ const bool toConvertable = (to == EbtFloat || to == EbtDouble || to == EbtInt || to == EbtUint || to == EbtBool);
+
+ if (fromConvertable && toConvertable) {
+ switch (op) {
+ case EOpAndAssign: // assignments can perform arbitrary conversions
+ case EOpInclusiveOrAssign: // ...
+ case EOpExclusiveOrAssign: // ...
+ case EOpAssign: // ...
+ case EOpAddAssign: // ...
+ case EOpSubAssign: // ...
+ case EOpMulAssign: // ...
+ case EOpVectorTimesScalarAssign: // ...
+ case EOpMatrixTimesScalarAssign: // ...
+ case EOpDivAssign: // ...
+ case EOpModAssign: // ...
+ case EOpReturn: // function returns can also perform arbitrary conversions
+ case EOpFunctionCall: // conversion of a calling parameter
+ return true;
+ default:
+ break;
+ }
+ }
+ }
+
switch (to) {
case EbtDouble:
switch (from) {
@@ -1403,6 +1444,8 @@
case EOpIndexIndirect:
case EOpIndexDirectStruct:
case EOpVectorSwizzle:
+ case EOpConvFloatToDouble:
+ case EOpConvDoubleToFloat:
return true;
default:
return false;
@@ -1433,6 +1476,20 @@
case EOpConvBoolToInt:
case EOpConvIntToUint:
case EOpConvBoolToUint:
+ case EOpConvInt64ToBool:
+ case EOpConvBoolToInt64:
+ case EOpConvUint64ToBool:
+ case EOpConvBoolToUint64:
+ case EOpConvInt64ToInt:
+ case EOpConvIntToInt64:
+ case EOpConvUint64ToUint:
+ case EOpConvUintToUint64:
+ case EOpConvInt64ToUint64:
+ case EOpConvUint64ToInt64:
+ case EOpConvInt64ToUint:
+ case EOpConvUintToInt64:
+ case EOpConvUint64ToInt:
+ case EOpConvIntToUint64:
// unary operations
case EOpNegative:
@@ -1624,11 +1681,11 @@
case EOpGreaterThan:
case EOpLessThanEqual:
case EOpGreaterThanEqual:
- // Relational comparisons need matching numeric types and will promote to scalar Boolean.
- if (left->getBasicType() == EbtBool || left->getType().isVector() || left->getType().isMatrix())
+ // Relational comparisons need numeric types and will promote to scalar Boolean.
+ if (left->getBasicType() == EbtBool)
return false;
-
- // Fall through
+ setType(TType(EbtBool));
+ break;
case EOpEqual:
case EOpNotEqual:
diff --git a/glslang/MachineIndependent/LiveTraverser.h b/glslang/MachineIndependent/LiveTraverser.h
new file mode 100644
index 0000000..5a90204
--- /dev/null
+++ b/glslang/MachineIndependent/LiveTraverser.h
@@ -0,0 +1,134 @@
+//
+//Copyright (C) 2016 LunarG, Inc.
+//
+//All rights reserved.
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+//POSSIBILITY OF SUCH DAMAGE.
+//
+
+#include "../Include/Common.h"
+#include "reflection.h"
+#include "localintermediate.h"
+
+#include "gl_types.h"
+
+#include <list>
+#include <unordered_set>
+
+namespace glslang {
+
+//
+// The traverser: mostly pass through, except
+// - processing function-call nodes to push live functions onto the stack of functions to process
+// - processing selection nodes to trim semantically dead code
+//
+// This is in the glslang namespace directly so it can be a friend of TReflection.
+// This can be derived from to implement reflection database traversers or
+// binding mappers: anything that wants to traverse the live subset of the tree.
+//
+
+class TLiveTraverser : public TIntermTraverser {
+public:
+ TLiveTraverser(const TIntermediate& i, bool traverseAll = false) :
+ intermediate(i), traverseAll(traverseAll)
+ { }
+
+ //
+ // Given a function name, find its subroot in the tree, and push it onto the stack of
+ // functions left to process.
+ //
+ void pushFunction(const TString& name)
+ {
+ TIntermSequence& globals = intermediate.getTreeRoot()->getAsAggregate()->getSequence();
+ for (unsigned int f = 0; f < globals.size(); ++f) {
+ TIntermAggregate* candidate = globals[f]->getAsAggregate();
+ if (candidate && candidate->getOp() == EOpFunction && candidate->getName() == name) {
+ functions.push_back(candidate);
+ break;
+ }
+ }
+ }
+
+ typedef std::list<TIntermAggregate*> TFunctionStack;
+ TFunctionStack functions;
+
+protected:
+ // To catch which function calls are not dead, and hence which functions must be visited.
+ virtual bool visitAggregate(TVisit, TIntermAggregate* node)
+ {
+ if (!traverseAll)
+ if (node->getOp() == EOpFunctionCall)
+ addFunctionCall(node);
+
+ return true; // traverse this subtree
+ }
+
+ // To prune semantically dead paths.
+ virtual bool visitSelection(TVisit /* visit */, TIntermSelection* node)
+ {
+ if (traverseAll)
+ return true; // traverse all code
+
+ TIntermConstantUnion* constant = node->getCondition()->getAsConstantUnion();
+ if (constant) {
+ // cull the path that is dead
+ if (constant->getConstArray()[0].getBConst() == true && node->getTrueBlock())
+ node->getTrueBlock()->traverse(this);
+ if (constant->getConstArray()[0].getBConst() == false && node->getFalseBlock())
+ node->getFalseBlock()->traverse(this);
+
+ return false; // don't traverse any more, we did it all above
+ } else
+ return true; // traverse the whole subtree
+ }
+
+ // Track live functions as well as uniforms, so that we don't visit dead functions
+ // and only visit each function once.
+ void addFunctionCall(TIntermAggregate* call)
+ {
+ // // just use the map to ensure we process each function at most once
+ if (liveFunctions.find(call->getName()) == liveFunctions.end()) {
+ liveFunctions.insert(call->getName());
+ pushFunction(call->getName());
+ }
+ }
+
+ const TIntermediate& intermediate;
+ typedef std::unordered_set<TString> TLiveFunctions;
+ TLiveFunctions liveFunctions;
+ bool traverseAll;
+
+private:
+ // prevent copy & copy construct
+ TLiveTraverser(TLiveTraverser&);
+ TLiveTraverser& operator=(TLiveTraverser&);
+};
+
+} // namespace glslang
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
new file mode 100644
index 0000000..4c1d02a
--- /dev/null
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -0,0 +1,184 @@
+//
+//Copyright (C) 2002-2005 3Dlabs Inc. Ltd.
+//Copyright (C) 2016 Google, Inc.
+//
+//All rights reserved.
+//
+//Redistribution and use in source and binary forms, with or without
+//modification, are permitted provided that the following conditions
+//are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of 3Dlabs Inc. Ltd. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+//POSSIBILITY OF SUCH DAMAGE.
+//
+
+// Implement the TParseContextBase class.
+
+#include "ParseHelper.h"
+
+extern int yyparse(glslang::TParseContext*);
+
+namespace glslang {
+
+// Select the best matching function for 'call' from 'candidateList'.
+//
+// Assumptions
+//
+// There is no exact match, so a selection algorithm needs to run. That is, the
+// language-specific handler should check for exact match first, to
+// decide what to do, before calling this selector.
+//
+// Input
+//
+// * list of candidate signatures to select from
+// * the call
+// * a predicate function convertible(from, to) that says whether or not type
+// 'from' can implicitly convert to type 'to' (it includes the case of what
+// the calling language would consider a matching type with no conversion
+// needed)
+// * a predicate function better(from1, from2, to1, to2) that says whether or
+// not a conversion from <-> to2 is considered better than a conversion
+// from <-> to1 (both in and out directions need testing, as declared by the
+// formal parameter)
+//
+// Output
+//
+// * best matching candidate (or none, if no viable candidates found)
+// * whether there was a tie for the best match (ambiguous overload selection,
+// caller's choice for how to report)
+//
+const TFunction* TParseContextBase::selectFunction(
+ const TVector<const TFunction*> candidateList,
+ const TFunction& call,
+ std::function<bool(const TType& from, const TType& to)> convertible,
+ std::function<bool(const TType& from, const TType& to1, const TType& to2)> better,
+ /* output */ bool& tie)
+{
+//
+// Operation
+//
+// 1. Prune the input list of candidates down to a list of viable candidates,
+// where each viable candidate has
+//
+// * at least as many parameters as there are calling arguments, with any
+// remaining parameters being optional or having default values
+// * each parameter is true under convertible(A, B), where A is the calling
+// type for in and B is the formal type, and in addition, for out B is the
+// calling type and A is the formal type
+//
+// 2. If there are no viable candidates, return with no match.
+//
+// 3. If there is only one viable candidate, it is the best match.
+//
+// 4. If there are multiple viable candidates, select the first viable candidate
+// as the incumbent. Compare the incumbent to the next viable candidate, and if
+// that candidate is better (bullets below), make it the incumbent. Repeat, with
+// a linear walk through the viable candidate list. The final incumbent will be
+// returned as the best match. A viable candidate is better than the incumbent if
+//
+// * it has a function argument with a better(...) conversion than the incumbent,
+// for all directions needed by in and out
+// * the incumbent has no argument with a better(...) conversion then the
+// candidate, for either in or out (as needed)
+//
+// 5. Check for ambiguity by comparing the best match against all other viable
+// candidates. If any other viable candidate has a function argument with a
+// better(...) conversion than the best candidate (for either in or out
+// directions), return that there was a tie for best.
+//
+
+ tie = false;
+
+ // 1. prune to viable...
+ TVector<const TFunction*> viableCandidates;
+ for (auto it = candidateList.begin(); it != candidateList.end(); ++it) {
+ const TFunction& candidate = *(*it);
+
+ // to even be a potential match, number of arguments has to match
+ if (call.getParamCount() != candidate.getParamCount())
+ continue;
+
+ // see if arguments are convertible
+ bool viable = true;
+ for (int param = 0; param < candidate.getParamCount(); ++param) {
+ if (candidate[param].type->getQualifier().isParamInput()) {
+ if (! convertible(*call[param].type, *candidate[param].type)) {
+ viable = false;
+ break;
+ }
+ }
+ if (candidate[param].type->getQualifier().isParamOutput()) {
+ if (! convertible(*candidate[param].type, *call[param].type)) {
+ viable = false;
+ break;
+ }
+ }
+ }
+
+ if (viable)
+ viableCandidates.push_back(&candidate);
+ }
+
+ // 2. none viable...
+ if (viableCandidates.size() == 0)
+ return nullptr;
+
+ // 3. only one viable...
+ if (viableCandidates.size() == 1)
+ return viableCandidates.front();
+
+ // 4. find best...
+ auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2){
+ // is call -> can2 better than call -> can1 for any parameter
+ bool hasBetterParam = false;
+ for (int param = 0; param < call.getParamCount(); ++param) {
+ if (better(*call[param].type, *can1[param].type, *can2[param].type)) {
+ hasBetterParam = true;
+ break;
+ }
+ }
+ return hasBetterParam;
+ };
+
+ const TFunction* incumbent = viableCandidates.front();
+ for (auto it = viableCandidates.begin() + 1; it != viableCandidates.end(); ++it) {
+ const TFunction& candidate = *(*it);
+ if (betterParam(*incumbent, candidate) && ! betterParam(candidate, *incumbent))
+ incumbent = &candidate;
+ }
+
+ // 5. ambiguity...
+ for (auto it = viableCandidates.begin(); it != viableCandidates.end(); ++it) {
+ if (incumbent == *it)
+ continue;
+ const TFunction& candidate = *(*it);
+ if (betterParam(*incumbent, candidate))
+ tie = true;
+ }
+
+ return incumbent;
+}
+
+} // end namespace glslang
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 398de1b..3c9caf1 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -39,7 +39,7 @@
#include "Scan.h"
#include "../OSDependent/osinclude.h"
-#include <stdarg.h>
+#include <cstdarg>
#include <algorithm>
#include "preprocessor/PpContext.h"
@@ -55,53 +55,20 @@
contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), statementNestingLevel(0),
inMain(false), postMainReturn(false), currentFunctionType(nullptr), blockName(nullptr),
limits(resources.limits), parsingBuiltins(parsingBuiltins),
- afterEOF(false),
atomicUintOffsets(nullptr), anyIndexLimits(false)
{
// ensure we always have a linkage node, even if empty, to simplify tree topology algorithms
linkage = new TIntermAggregate;
- // set all precision defaults to EpqNone, which is correct for all desktop types
- // and for ES types that don't have defaults (thus getting an error on use)
- for (int type = 0; type < EbtNumTypes; ++type)
- defaultPrecision[type] = EpqNone;
-
- for (int type = 0; type < maxSamplerIndex; ++type)
- defaultSamplerPrecision[type] = EpqNone;
-
- // replace with real precision defaults for those that have them
- if (profile == EEsProfile) {
- TSampler sampler;
- sampler.set(EbtFloat, Esd2D);
- defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
- sampler.set(EbtFloat, EsdCube);
- defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
- sampler.set(EbtFloat, Esd2D);
- sampler.external = true;
- defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
-
- // If we are parsing built-in computational variables/functions, it is meaningful to record
- // whether the built-in has no precision qualifier, as that ambiguity
- // is used to resolve the precision from the supplied arguments/operands instead.
- // So, we don't actually want to replace EpqNone with a default precision for built-ins.
- if (! parsingBuiltins) {
- switch (language) {
- case EShLangFragment:
- defaultPrecision[EbtInt] = EpqMedium;
- defaultPrecision[EbtUint] = EpqMedium;
- break;
- default:
- defaultPrecision[EbtInt] = EpqHigh;
- defaultPrecision[EbtUint] = EpqHigh;
- defaultPrecision[EbtFloat] = EpqHigh;
- break;
- }
- }
-
- defaultPrecision[EbtSampler] = EpqLow;
- defaultPrecision[EbtAtomicUint] = EpqHigh;
+ // decide whether precision qualifiers should be ignored or respected
+ if (profile == EEsProfile || spvVersion.vulkan > 0) {
+ precisionManager.respectPrecisionQualifiers();
+ if (! parsingBuiltins && language == EShLangFragment && profile != EEsProfile && spvVersion.vulkan > 0)
+ precisionManager.warnAboutDefaults();
}
+ setPrecisionDefaults();
+
globalUniformDefaults.clear();
globalUniformDefaults.layoutMatrix = ElmColumnMajor;
globalUniformDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd140 : ElpShared;
@@ -131,6 +98,60 @@
delete [] atomicUintOffsets;
}
+// Set up all default precisions as needed by the current environment.
+// Intended just as a TParseContext constructor helper.
+void TParseContext::setPrecisionDefaults()
+{
+ // Set all precision defaults to EpqNone, which is correct for all types
+ // when not obeying precision qualifiers, and correct for types that don't
+ // have defaults (thus getting an error on use) when obeying precision
+ // qualifiers.
+
+ for (int type = 0; type < EbtNumTypes; ++type)
+ defaultPrecision[type] = EpqNone;
+
+ for (int type = 0; type < maxSamplerIndex; ++type)
+ defaultSamplerPrecision[type] = EpqNone;
+
+ // replace with real precision defaults for those that have them
+ if (obeyPrecisionQualifiers()) {
+ if (profile == EEsProfile) {
+ // Most don't have defaults, a few default to lowp.
+ TSampler sampler;
+ sampler.set(EbtFloat, Esd2D);
+ defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
+ sampler.set(EbtFloat, EsdCube);
+ defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
+ sampler.set(EbtFloat, Esd2D);
+ sampler.external = true;
+ defaultSamplerPrecision[computeSamplerTypeIndex(sampler)] = EpqLow;
+ } else {
+ // Non-ES profile
+ // All default to highp.
+ for (int type = 0; type < maxSamplerIndex; ++type)
+ defaultSamplerPrecision[type] = EpqHigh;
+ }
+
+ // If we are parsing built-in computational variables/functions, it is meaningful to record
+ // whether the built-in has no precision qualifier, as that ambiguity
+ // is used to resolve the precision from the supplied arguments/operands instead.
+ // So, we don't actually want to replace EpqNone with a default precision for built-ins.
+ if (! parsingBuiltins) {
+ if (profile == EEsProfile && language == EShLangFragment) {
+ defaultPrecision[EbtInt] = EpqMedium;
+ defaultPrecision[EbtUint] = EpqMedium;
+ } else {
+ defaultPrecision[EbtInt] = EpqHigh;
+ defaultPrecision[EbtUint] = EpqHigh;
+ defaultPrecision[EbtFloat] = EpqHigh;
+ }
+ }
+
+ defaultPrecision[EbtSampler] = EpqLow;
+ defaultPrecision[EbtAtomicUint] = EpqHigh;
+ }
+}
+
void TParseContext::setLimits(const TBuiltInResource& r)
{
resources = r;
@@ -171,13 +192,15 @@
}
// This is called from bison when it has a parse (syntax) error
+// Note though that to stop cascading errors, we set EOF, which
+// will usually cause a syntax error, so be more accurate that
+// compilation is terminating.
void TParseContext::parserError(const char* s)
{
- if (afterEOF) {
- if (tokensBeforeEOF == 1)
- error(getCurrentLoc(), "", "premature end of input", s, "");
- } else
+ if (! getScanner()->atEndOfInput() || numErrors == 0)
error(getCurrentLoc(), "", "", s, "");
+ else
+ error(getCurrentLoc(), "compilation terminated", "", "");
}
void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>& tokens)
@@ -253,7 +276,7 @@
//
bool TParseContext::parseVectorFields(const TSourceLoc& loc, const TString& compString, int vecSize, TVectorFields& fields)
{
- fields.num = (int) compString.size();
+ fields.num = (int)compString.size();
if (fields.num > 4) {
error(loc, "illegal vector field selection", compString.c_str(), "");
return false;
@@ -761,13 +784,32 @@
}
// Handle seeing a binary node with a math operation.
+// Returns nullptr if not semantically allowed.
TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right)
{
rValueErrorCheck(loc, str, left->getAsTyped());
rValueErrorCheck(loc, str, right->getAsTyped());
- TIntermTyped* result = intermediate.addBinaryMath(op, left, right, loc);
- if (! result)
+ bool allowed = true;
+ switch (op) {
+ // TODO: Bring more source language-specific checks up from intermediate.cpp
+ // to the specific parse helpers for that source language.
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
+ if (! left->isScalar() || ! right->isScalar())
+ allowed = false;
+ break;
+ default:
+ break;
+ }
+
+ TIntermTyped* result = nullptr;
+ if (allowed)
+ result = intermediate.addBinaryMath(op, left, right, loc);
+
+ if (result == nullptr)
binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
return result;
@@ -865,7 +907,7 @@
TString vectorString = field;
TIntermTyped* index = intermediate.addSwizzle(fields, loc);
result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, (int) vectorString.size()));
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, (int)vectorString.size()));
}
// Swizzle operations propagate specialization-constantness
if (base->getType().getQualifier().isSpecConstant())
@@ -994,7 +1036,7 @@
error(loc, "can't find function", function.getName().c_str(), "");
// Note: 'prevDec' could be 'function' if this is the first time we've seen function
// as it would have just been put in the symbol table. Otherwise, we're looking up
- // an earlier occurance.
+ // an earlier occurrence.
if (prevDec && prevDec->isDefined()) {
// Then this function already has a body.
@@ -1009,20 +1051,25 @@
currentFunctionType = new TType(EbtVoid);
functionReturnsValue = false;
- //
- // Raise error message if main function takes any parameters or returns anything other than void
- //
- if (function.getName() == intermediate.getEntryPoint().c_str()) {
- if (function.getParamCount() > 0)
- error(loc, "function cannot take any parameter(s)", function.getName().c_str(), "");
- if (function.getType().getBasicType() != EbtVoid)
- error(loc, "", function.getType().getBasicTypeString().c_str(), "main function cannot return a value");
- intermediate.addMainCount();
+ // Check for entry point
+ if (function.getName().compare(intermediate.getEntryPointName().c_str()) == 0) {
+ intermediate.setEntryPointMangledName(function.getMangledName().c_str());
+ intermediate.incrementEntryPointCount();
inMain = true;
} else
inMain = false;
//
+ // Raise error message if main function takes any parameters or returns anything other than void
+ //
+ if (inMain) {
+ if (function.getParamCount() > 0)
+ error(loc, "function cannot take any parameter(s)", function.getName().c_str(), "");
+ if (function.getType().getBasicType() != EbtVoid)
+ error(loc, "", function.getType().getBasicTypeString().c_str(), "entry point cannot return a value");
+ }
+
+ //
// New symbol table scope for body of function plus its arguments
//
symbolTable.push();
@@ -1204,7 +1251,9 @@
TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(),
function.getParamCount() == 1,
&arguments, function.getType());
- computeBuiltinPrecisions(*result, function);
+ if (obeyPrecisionQualifiers())
+ computeBuiltinPrecisions(*result, function);
+
if (result == nullptr) {
error(arguments.getLoc(), " wrong operand type", "Internal Error",
"built in unary operator function. Type: %s",
@@ -1252,9 +1301,6 @@
TPrecisionQualifier operationPrecision = EpqNone;
TPrecisionQualifier resultPrecision = EpqNone;
- if (profile != EEsProfile)
- return;
-
TIntermOperator* opNode = node.getAsOperator();
if (opNode == nullptr)
return;
@@ -1864,6 +1910,24 @@
return new TFunction(&empty, type, op);
}
+// Handle seeing a precision qualifier in the grammar.
+void TParseContext::handlePrecisionQualifier(const TSourceLoc& loc, TQualifier& qualifier, TPrecisionQualifier precision)
+{
+ if (obeyPrecisionQualifiers())
+ qualifier.precision = precision;
+}
+
+// Check for messages to give on seeing a precision qualifier used in a
+// declaration in the grammar.
+void TParseContext::checkPrecisionQualifier(const TSourceLoc& loc, TPrecisionQualifier)
+{
+ if (precisionManager.shouldWarnAboutDefaults()) {
+ warn(loc, "all default precisions are highp; use precision statements to quiet warning, e.g.:\n"
+ " \"precision mediump int; precision highp float;\"", "", "");
+ precisionManager.defaultWarningGiven();
+ }
+}
+
//
// Same error message for all places assignments don't work.
//
@@ -2869,8 +2933,11 @@
if (basicType == EbtInt || basicType == EbtFloat) {
if (publicType.isScalar()) {
defaultPrecision[basicType] = qualifier;
- if (basicType == EbtInt)
+ if (basicType == EbtInt) {
defaultPrecision[EbtUint] = qualifier;
+ precisionManager.explicitIntDefaultSeen();
+ } else
+ precisionManager.explicitFloatDefaultSeen();
return; // all is well
}
@@ -2915,7 +2982,7 @@
{
// Built-in symbols are allowed some ambiguous precisions, to be pinned down
// later by context.
- if (profile != EEsProfile || parsingBuiltins)
+ if (! obeyPrecisionQualifiers() || parsingBuiltins)
return;
if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh)
@@ -4825,10 +4892,10 @@
// more than one function."
const TFunction* candidate = nullptr;
- TVector<TFunction*> candidateList;
+ TVector<const TFunction*> candidateList;
symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
- for (TVector<TFunction*>::const_iterator it = candidateList.begin(); it != candidateList.end(); ++it) {
+ for (auto it = candidateList.begin(); it != candidateList.end(); ++it) {
const TFunction& function = *(*it);
// to even be a potential match, number of arguments has to match
@@ -4876,10 +4943,100 @@
}
// Function finding algorithm for desktop version 400 and above.
+//
+// "When function calls are resolved, an exact type match for all the arguments
+// is sought. If an exact match is found, all other functions are ignored, and
+// the exact match is used. If no exact match is found, then the implicit
+// conversions in section 4.1.10 Implicit Conversions will be applied to find
+// a match. Mismatched types on input parameters (in or inout or default) must
+// have a conversion from the calling argument type to the formal parameter type.
+// Mismatched types on output parameters (out or inout) must have a conversion
+// from the formal parameter type to the calling argument type.
+//
+// "If implicit conversions can be used to find more than one matching function,
+// a single best-matching function is sought. To determine a best match, the
+// conversions between calling argument and formal parameter types are compared
+// for each function argument and pair of matching functions. After these
+// comparisons are performed, each pair of matching functions are compared.
+// A function declaration A is considered a better match than function
+// declaration B if
+//
+// * for at least one function argument, the conversion for that argument in A
+// is better than the corresponding conversion in B; and
+// * there is no function argument for which the conversion in B is better than
+// the corresponding conversion in A.
+//
+// "If a single function declaration is considered a better match than every
+// other matching function declaration, it will be used. Otherwise, a
+// compile-time semantic error for an ambiguous overloaded function call occurs.
+//
+// "To determine whether the conversion for a single argument in one match is
+// better than that for another match, the following rules are applied, in order:
+//
+// 1. An exact match is better than a match involving any implicit conversion.
+// 2. A match involving an implicit conversion from float to double is better
+// than a match involving any other implicit conversion.
+// 3. A match involving an implicit conversion from either int or uint to float
+// is better than a match involving an implicit conversion from either int
+// or uint to double.
+//
+// "If none of the rules above apply to a particular pair of conversions, neither
+// conversion is considered better than the other."
+//
const TFunction* TParseContext::findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn)
{
- // TODO: 4.00 functionality: findFunction400()
- return findFunction120(loc, call, builtIn);
+ // first, look for an exact match
+ TSymbol* symbol = symbolTable.find(call.getMangledName(), &builtIn);
+ if (symbol)
+ return symbol->getAsFunction();
+
+ // no exact match, use the generic selector, parameterized by the GLSL rules
+
+ // create list of candidates to send
+ TVector<const TFunction*> candidateList;
+ symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
+
+ // can 'from' convert to 'to'?
+ const auto convertible = [this](const TType& from, const TType& to) {
+ if (from == to)
+ return true;
+ if (from.isArray() || to.isArray() || ! from.sameElementShape(to))
+ return false;
+ return intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType());
+ };
+
+ // Is 'to2' a better conversion than 'to1'?
+ // Ties should not be considered as better.
+ // Assumes 'convertible' already said true.
+ const auto better = [](const TType& from, const TType& to1, const TType& to2) {
+ // 1. exact match
+ if (from == to2)
+ return from != to1;
+ if (from == to1)
+ return false;
+
+ // 2. float -> double is better
+ if (from.getBasicType() == EbtFloat) {
+ if (to2.getBasicType() == EbtDouble && to1.getBasicType() != EbtDouble)
+ return true;
+ }
+
+ // 3. -> float is better than -> double
+ return to2.getBasicType() == EbtFloat && to1.getBasicType() == EbtDouble;
+ };
+
+ // for ambiguity reporting
+ bool tie = false;
+
+ // send to the generic selector
+ const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie);
+
+ if (bestMatch == nullptr)
+ error(loc, "no matching overloaded function found", call.getName().c_str(), "");
+ else if (tie)
+ error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), "");
+
+ return bestMatch;
}
// When a declaration includes a type, but not a variable name, it can be
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 544c3d3..aa92954 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -77,10 +77,10 @@
EProfile profile, const SpvVersion& spvVersion, EShLanguage language,
TInfoSink& infoSink, bool forwardCompatible, EShMessages messages)
: TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages),
- symbolTable(symbolTable), tokensBeforeEOF(false),
+ symbolTable(symbolTable),
linkage(nullptr), scanContext(nullptr), ppContext(nullptr) { }
virtual ~TParseContextBase() { }
-
+
virtual void setLimits(const TBuiltInResource&) = 0;
EShLanguage getLanguage() const { return language; }
@@ -125,7 +125,6 @@
}
TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile
- bool tokensBeforeEOF;
protected:
TParseContextBase(TParseContextBase&);
@@ -142,6 +141,46 @@
std::function<void(int, int, const char*)> versionCallback;
std::function<void(int, const char*, const char*)> extensionCallback;
std::function<void(int, const char*)> errorCallback;
+
+ // see implementation for detail
+ const TFunction* selectFunction(const TVector<const TFunction*>, const TFunction&,
+ std::function<bool(const TType&, const TType&)>,
+ std::function<bool(const TType&, const TType&, const TType&)>,
+ /* output */ bool& tie);
+};
+
+//
+// Manage the state for when to respect precision qualifiers and when to warn about
+// the defaults being different than might be expected.
+//
+class TPrecisionManager {
+public:
+ TPrecisionManager() : obey(false), warn(false), explicitIntDefault(false), explicitFloatDefault(false){ }
+ virtual ~TPrecisionManager() {}
+
+ void respectPrecisionQualifiers() { obey = true; }
+ bool respectingPrecisionQualifiers() const { return obey; }
+ bool shouldWarnAboutDefaults() const { return warn; }
+ void defaultWarningGiven() { warn = false; }
+ void warnAboutDefaults() { warn = true; }
+ void explicitIntDefaultSeen()
+ {
+ explicitIntDefault = true;
+ if (explicitFloatDefault)
+ warn = false;
+ }
+ void explicitFloatDefaultSeen()
+ {
+ explicitFloatDefault = true;
+ if (explicitIntDefault)
+ warn = false;
+ }
+
+protected:
+ bool obey; // respect precision qualifiers
+ bool warn; // need to give a warning about the defaults
+ bool explicitIntDefault; // user set the default for int/uint
+ bool explicitFloatDefault; // user set the default for float
};
//
@@ -155,6 +194,9 @@
bool forwardCompatible = false, EShMessages messages = EShMsgDefault);
virtual ~TParseContext();
+ bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); };
+ void setPrecisionDefaults();
+
void setLimits(const TBuiltInResource&);
bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false);
void parserError(const char* s); // for bison's yyerror
@@ -209,6 +251,8 @@
void userFunctionCallCheck(const TSourceLoc&, TIntermAggregate&);
void samplerConstructorLocationCheck(const TSourceLoc&, const char* token, TIntermNode*);
TFunction* handleConstructorCall(const TSourceLoc&, const TPublicType&);
+ void handlePrecisionQualifier(const TSourceLoc&, TQualifier&, TPrecisionQualifier);
+ void checkPrecisionQualifier(const TSourceLoc&, TPrecisionQualifier);
bool parseVectorFields(const TSourceLoc&, const TString&, int vecSize, TVectorFields&);
void assignError(const TSourceLoc&, const char* op, TString left, TString right);
@@ -341,7 +385,7 @@
const bool parsingBuiltins; // true if parsing built-in symbols/functions
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2 * 2 * 2)); // see computeSamplerTypeIndex()
TPrecisionQualifier defaultSamplerPrecision[maxSamplerIndex];
- bool afterEOF;
+ TPrecisionManager precisionManager;
TQualifier globalBufferDefaults;
TQualifier globalUniformDefaults;
TQualifier globalInputDefaults;
diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp
index d56979b..9dfcd30 100644
--- a/glslang/MachineIndependent/PoolAlloc.cpp
+++ b/glslang/MachineIndependent/PoolAlloc.cpp
@@ -53,7 +53,7 @@
TThreadMemoryPools* threadData = new TThreadMemoryPools();
threadData->threadPoolAllocator = threadPoolAllocator;
-
+
OS_SetTLSValue(PoolIndex, threadData);
}
@@ -63,7 +63,7 @@
TThreadMemoryPools* globalPools = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
if (! globalPools)
return;
-
+
GetThreadPoolAllocator().popAll();
delete &GetThreadPoolAllocator();
delete globalPools;
@@ -149,12 +149,12 @@
TPoolAllocator::~TPoolAllocator()
{
- while (inUseList) {
- tHeader* next = inUseList->nextPage;
+ while (inUseList) {
+ tHeader* next = inUseList->nextPage;
inUseList->~tHeader();
delete [] reinterpret_cast<char*>(inUseList);
- inUseList = next;
- }
+ inUseList = next;
+ }
//
// Always delete the free list memory - it can't be being
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index e297e34..ee0dbb4 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -38,7 +38,7 @@
// GLSL scanning, leveraging the scanning done by the preprocessor.
//
-#include <string.h>
+#include <cstring>
#include <unordered_map>
#include <unordered_set>
diff --git a/glslang/MachineIndependent/Scan.h b/glslang/MachineIndependent/Scan.h
index 4282cd5..67c86d2 100644
--- a/glslang/MachineIndependent/Scan.h
+++ b/glslang/MachineIndependent/Scan.h
@@ -204,6 +204,8 @@
currentSource = numSources;
}
+ bool atEndOfInput() const { return endOfFileReached; }
+
const TSourceLoc& getSourceLoc() const
{
if (singleLogical) {
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index dccc1f0..414a62b 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -41,7 +41,7 @@
// This is the platform independent interface between an OGL driver
// and the shading language compiler/linker.
//
-#include <string.h>
+#include <cstring>
#include <iostream>
#include <sstream>
#include <memory>
@@ -146,6 +146,23 @@
return index;
}
+const int SourceCount = 2;
+
+int MapSourceToIndex(EShSource source)
+{
+ int index = 0;
+
+ switch (source) {
+ case EShSourceGlsl: index = 0; break;
+ case EShSourceHlsl: index = 1; break;
+ default: break;
+ }
+
+ assert(index < SourceCount);
+
+ return index;
+}
+
// only one of these needed for non-ES; ES needs 2 for different precision defaults of built-ins
enum EPrecisionClass {
EPcGeneral,
@@ -161,8 +178,8 @@
// Each has a different set of built-ins, and we want to preserve that from
// compile to compile.
//
-TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][EPcCount] = {};
-TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][EShLangCount] = {};
+TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EPcCount] = {};
+TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EShLangCount] = {};
TPoolAllocator* PerProcessGPA = 0;
@@ -305,7 +322,8 @@
int versionIndex = MapVersionToIndex(version);
int spvVersionIndex = MapSpvVersionToIndex(spvVersion);
int profileIndex = MapProfileToIndex(profile);
- if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][EPcGeneral]) {
+ int sourceIndex = MapSourceToIndex(source);
+ if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) {
glslang::ReleaseGlobalLock();
return;
@@ -333,18 +351,18 @@
// Copy the local symbol tables from the new pool to the global tables using the process-global pool
for (int precClass = 0; precClass < EPcCount; ++precClass) {
if (! commonTable[precClass]->isEmpty()) {
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass] = new TSymbolTable;
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass]->copyTable(*commonTable[precClass]);
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass]->readOnly();
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass] = new TSymbolTable;
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->copyTable(*commonTable[precClass]);
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->readOnly();
}
}
for (int stage = 0; stage < EShLangCount; ++stage) {
if (! stageTables[stage]->isEmpty()) {
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage] = new TSymbolTable;
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->adoptLevels(*CommonSymbolTable
- [versionIndex][spvVersionIndex][profileIndex][CommonIndex(profile, (EShLanguage)stage)]);
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->copyTable(*stageTables[stage]);
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->readOnly();
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage] = new TSymbolTable;
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->adoptLevels(*CommonSymbolTable
+ [versionIndex][spvVersionIndex][profileIndex][sourceIndex][CommonIndex(profile, (EShLanguage)stage)]);
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->copyTable(*stageTables[stage]);
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->readOnly();
}
}
@@ -656,6 +674,7 @@
TSymbolTable* cachedTable = SharedSymbolTables[MapVersionToIndex(version)]
[MapSpvVersionToIndex(spvVersion)]
[MapProfileToIndex(profile)]
+ [MapSourceToIndex(source)]
[compiler->getLanguage()];
// Dynamically allocate the symbol table so we can control when it is deallocated WRT the pool.
@@ -676,10 +695,9 @@
TParseContextBase* parseContext;
if (source == EShSourceHlsl) {
parseContext = new HlslParseContext(symbolTable, intermediate, false, version, profile, spvVersion,
- compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages);
- }
- else {
- intermediate.setEntryPoint("main");
+ compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages);
+ } else {
+ intermediate.setEntryPointName("main");
parseContext = new TParseContext(symbolTable, intermediate, false, version, profile, spvVersion,
compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages);
}
@@ -1092,9 +1110,11 @@
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
for (int p = 0; p < ProfileCount; ++p) {
- for (int lang = 0; lang < EShLangCount; ++lang) {
- delete SharedSymbolTables[version][spvVersion][p][lang];
- SharedSymbolTables[version][spvVersion][p][lang] = 0;
+ for (int source = 0; source < SourceCount; ++source) {
+ for (int stage = 0; stage < EShLangCount; ++stage) {
+ delete SharedSymbolTables[version][spvVersion][p][source][stage];
+ SharedSymbolTables[version][spvVersion][p][source][stage] = 0;
+ }
}
}
}
@@ -1103,9 +1123,11 @@
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
for (int p = 0; p < ProfileCount; ++p) {
- for (int pc = 0; pc < EPcCount; ++pc) {
- delete CommonSymbolTable[version][spvVersion][p][pc];
- CommonSymbolTable[version][spvVersion][p][pc] = 0;
+ for (int source = 0; source < SourceCount; ++source) {
+ for (int pc = 0; pc < EPcCount; ++pc) {
+ delete CommonSymbolTable[version][spvVersion][p][source][pc];
+ CommonSymbolTable[version][spvVersion][p][source][pc] = 0;
+ }
}
}
}
@@ -1463,7 +1485,7 @@
void TShader::setEntryPoint(const char* entryPoint)
{
- intermediate->setEntryPoint(entryPoint);
+ intermediate->setEntryPointName(entryPoint);
}
//
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index bf0f1f9..2068f26 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -35,7 +35,7 @@
//
//
-// Symbol table for parsing. Most functionaliy and main ideas
+// Symbol table for parsing. Most functionality and main ideas
// are documented in the header file.
//
@@ -250,7 +250,7 @@
}
TVariable::TVariable(const TVariable& copyOf) : TSymbol(copyOf)
-{
+{
type.deepCopy(copyOf.type);
userType = copyOf.userType;
numExtensions = 0;
@@ -276,7 +276,7 @@
}
TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf)
-{
+{
for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
TParameter param;
parameters.push_back(param);
diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h
index 9877ab7..97c3d6b 100644
--- a/glslang/MachineIndependent/SymbolTable.h
+++ b/glslang/MachineIndependent/SymbolTable.h
@@ -357,7 +357,7 @@
return (*it).second;
}
- void findFunctionNameList(const TString& name, TVector<TFunction*>& list)
+ void findFunctionNameList(const TString& name, TVector<const TFunction*>& list)
{
size_t parenAt = name.find_first_of('(');
TString base(name, 0, parenAt + 1);
@@ -624,7 +624,7 @@
return false;
}
- void findFunctionNameList(const TString& name, TVector<TFunction*>& list, bool& builtIn)
+ void findFunctionNameList(const TString& name, TVector<const TFunction*>& list, bool& builtIn)
{
// For user levels, return the set found in the first scope with a match
builtIn = false;
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 72bad94..a1628f6 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -1125,6 +1125,7 @@
$$ = $1;
}
| precision_qualifier {
+ parseContext.checkPrecisionQualifier($1.loc, $1.qualifier.precision);
$$ = $1;
}
| interpolation_qualifier {
@@ -2206,20 +2207,17 @@
: HIGH_PRECISION {
parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "highp precision qualifier");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- $$.qualifier.precision = EpqHigh;
+ parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqHigh);
}
| MEDIUM_PRECISION {
parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "mediump precision qualifier");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- $$.qualifier.precision = EpqMedium;
+ parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqMedium);
}
| LOW_PRECISION {
parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "lowp precision qualifier");
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- $$.qualifier.precision = EpqLow;
+ parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqLow);
}
;
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index 0d1dc43..3d7dc8e 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -801,35 +801,35 @@
904, 914, 924, 933, 936, 940, 944, 949, 957, 962,
967, 972, 977, 986, 997, 1024, 1033, 1040, 1047, 1054,
1066, 1072, 1075, 1082, 1086, 1090, 1098, 1107, 1110, 1121,
- 1124, 1127, 1130, 1134, 1138, 1145, 1149, 1161, 1175, 1180,
- 1186, 1192, 1199, 1205, 1210, 1215, 1220, 1227, 1231, 1235,
- 1239, 1243, 1247, 1253, 1265, 1268, 1273, 1277, 1286, 1291,
- 1299, 1303, 1313, 1317, 1321, 1326, 1330, 1335, 1340, 1345,
- 1349, 1354, 1359, 1364, 1370, 1376, 1382, 1387, 1392, 1397,
- 1402, 1407, 1412, 1418, 1424, 1430, 1436, 1442, 1448, 1454,
- 1460, 1466, 1471, 1476, 1481, 1486, 1491, 1496, 1501, 1506,
- 1511, 1516, 1521, 1526, 1532, 1538, 1544, 1550, 1556, 1562,
- 1568, 1574, 1580, 1586, 1592, 1598, 1603, 1608, 1613, 1618,
- 1623, 1628, 1633, 1638, 1643, 1648, 1653, 1658, 1663, 1668,
- 1673, 1678, 1683, 1688, 1693, 1698, 1703, 1708, 1713, 1718,
- 1723, 1728, 1733, 1738, 1743, 1748, 1753, 1758, 1763, 1768,
- 1773, 1778, 1783, 1788, 1793, 1798, 1803, 1808, 1813, 1818,
- 1823, 1828, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868,
- 1873, 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918,
- 1923, 1928, 1933, 1938, 1943, 1948, 1953, 1958, 1963, 1968,
- 1973, 1978, 1983, 1988, 1993, 1998, 2003, 2008, 2013, 2018,
- 2023, 2028, 2033, 2038, 2043, 2048, 2053, 2058, 2063, 2068,
- 2073, 2078, 2083, 2088, 2093, 2098, 2103, 2108, 2113, 2118,
- 2123, 2128, 2133, 2138, 2143, 2149, 2155, 2161, 2167, 2173,
- 2179, 2185, 2190, 2206, 2212, 2218, 2227, 2227, 2238, 2238,
- 2248, 2251, 2264, 2282, 2306, 2310, 2316, 2321, 2332, 2335,
- 2341, 2350, 2353, 2359, 2363, 2364, 2370, 2371, 2372, 2373,
- 2374, 2375, 2376, 2380, 2381, 2385, 2381, 2397, 2398, 2402,
- 2402, 2409, 2409, 2423, 2426, 2434, 2442, 2453, 2454, 2458,
- 2465, 2469, 2477, 2481, 2494, 2494, 2514, 2517, 2523, 2535,
- 2547, 2547, 2562, 2562, 2578, 2578, 2599, 2602, 2608, 2611,
- 2617, 2621, 2628, 2633, 2638, 2645, 2648, 2657, 2661, 2668,
- 2671, 2677, 2677
+ 1124, 1127, 1131, 1135, 1139, 1146, 1150, 1162, 1176, 1181,
+ 1187, 1193, 1200, 1206, 1211, 1216, 1221, 1228, 1232, 1236,
+ 1240, 1244, 1248, 1254, 1266, 1269, 1274, 1278, 1287, 1292,
+ 1300, 1304, 1314, 1318, 1322, 1327, 1331, 1336, 1341, 1346,
+ 1350, 1355, 1360, 1365, 1371, 1377, 1383, 1388, 1393, 1398,
+ 1403, 1408, 1413, 1419, 1425, 1431, 1437, 1443, 1449, 1455,
+ 1461, 1467, 1472, 1477, 1482, 1487, 1492, 1497, 1502, 1507,
+ 1512, 1517, 1522, 1527, 1533, 1539, 1545, 1551, 1557, 1563,
+ 1569, 1575, 1581, 1587, 1593, 1599, 1604, 1609, 1614, 1619,
+ 1624, 1629, 1634, 1639, 1644, 1649, 1654, 1659, 1664, 1669,
+ 1674, 1679, 1684, 1689, 1694, 1699, 1704, 1709, 1714, 1719,
+ 1724, 1729, 1734, 1739, 1744, 1749, 1754, 1759, 1764, 1769,
+ 1774, 1779, 1784, 1789, 1794, 1799, 1804, 1809, 1814, 1819,
+ 1824, 1829, 1834, 1839, 1844, 1849, 1854, 1859, 1864, 1869,
+ 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919,
+ 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1969,
+ 1974, 1979, 1984, 1989, 1994, 1999, 2004, 2009, 2014, 2019,
+ 2024, 2029, 2034, 2039, 2044, 2049, 2054, 2059, 2064, 2069,
+ 2074, 2079, 2084, 2089, 2094, 2099, 2104, 2109, 2114, 2119,
+ 2124, 2129, 2134, 2139, 2144, 2150, 2156, 2162, 2168, 2174,
+ 2180, 2186, 2191, 2207, 2212, 2217, 2225, 2225, 2236, 2236,
+ 2246, 2249, 2262, 2280, 2304, 2308, 2314, 2319, 2330, 2333,
+ 2339, 2348, 2351, 2357, 2361, 2362, 2368, 2369, 2370, 2371,
+ 2372, 2373, 2374, 2378, 2379, 2383, 2379, 2395, 2396, 2400,
+ 2400, 2407, 2407, 2421, 2424, 2432, 2440, 2451, 2452, 2456,
+ 2463, 2467, 2475, 2479, 2492, 2492, 2512, 2515, 2521, 2533,
+ 2545, 2545, 2560, 2560, 2576, 2576, 2597, 2600, 2606, 2609,
+ 2615, 2619, 2626, 2631, 2636, 2643, 2646, 2655, 2659, 2666,
+ 2669, 2675, 2675
};
#endif
@@ -4594,49 +4594,50 @@
case 141:
#line 1127 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+ parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 4600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 142:
-#line 1130 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1131 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 143:
-#line 1134 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 4618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 144:
-#line 1138 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 145:
-#line 1145 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1146 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
-#line 4636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 146:
-#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1150 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -4649,11 +4650,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 4653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 147:
-#line 1161 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1162 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -4668,43 +4669,43 @@
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 148:
-#line 1175 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 149:
-#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1181 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "in");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
-#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 150:
-#line 1186 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1187 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "out");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
-#line 4704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 151:
-#line 1192 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -4712,52 +4713,52 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 4716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 152:
-#line 1199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
-#line 4727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 153:
-#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 154:
-#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1211 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 4747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 155:
-#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1216 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 156:
-#line 1220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared");
@@ -4765,67 +4766,67 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 157:
-#line 1227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1228 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 4778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 158:
-#line 1231 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 159:
-#line 1235 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 4796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 160:
-#line 1239 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1240 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 4805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 161:
-#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 162:
-#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1248 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 163:
-#line 1253 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
@@ -4835,56 +4836,56 @@
// 1) make sure each identifier is a type declared earlier with SUBROUTINE
// 2) save all of the identifiers for future comparison with the declared function
}
-#line 4839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 164:
-#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// TODO: 4.0 functionality: subroutine type to list
}
-#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 165:
-#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
}
-#line 4854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 166:
-#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
}
-#line 4863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 167:
-#line 1277 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayDimCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes, 0);
(yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
-#line 4874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 168:
-#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1287 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 169:
-#line 1291 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -4893,20 +4894,20 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 4897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 170:
-#line 1299 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 4906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 171:
-#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1304 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -4914,1738 +4915,1738 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size);
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 172:
-#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 173:
-#line 1317 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 4936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 174:
-#line 1321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 175:
-#line 1326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1327 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 176:
-#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 4965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 177:
-#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
-#line 4975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 178:
-#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
-#line 4985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 179:
-#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
-#line 4994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 180:
-#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 5004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 181:
-#line 1354 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1355 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 5014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 182:
-#line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 183:
-#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1365 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 184:
-#line 1370 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 5046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 185:
-#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 5057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 186:
-#line 1382 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1383 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(2);
}
-#line 5067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 187:
-#line 1387 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1388 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(3);
}
-#line 5077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 188:
-#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(4);
}
-#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 189:
-#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1398 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 5097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 190:
-#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 5107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 191:
-#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 192:
-#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(2);
}
-#line 5128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 193:
-#line 1418 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(3);
}
-#line 5139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 194:
-#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(4);
}
-#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 195:
-#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1431 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 196:
-#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1437 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 197:
-#line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 5183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 198:
-#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(2);
}
-#line 5194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 199:
-#line 1454 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1455 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(3);
}
-#line 5205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 200:
-#line 1460 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(4);
}
-#line 5216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 201:
-#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 5226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 202:
-#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 5236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 203:
-#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 5246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 204:
-#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 205:
-#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 5266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 206:
-#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 5276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 207:
-#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1497 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 5286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 208:
-#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 209:
-#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 5306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 210:
-#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1512 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 211:
-#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1517 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 5326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 212:
-#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 5336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 213:
-#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1527 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 214:
-#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1533 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 5358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 215:
-#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 216:
-#line 1544 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 5380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 217:
-#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1551 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 5391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 218:
-#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 5402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 219:
-#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1563 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 5413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 220:
-#line 1568 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1569 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 5424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 221:
-#line 1574 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1575 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 5435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 222:
-#line 1580 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1581 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 5446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 223:
-#line 1586 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1587 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 5457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 224:
-#line 1592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1593 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 5468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 225:
-#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1599 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
-#line 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 226:
-#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 5488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 227:
-#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1609 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 5498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 228:
-#line 1613 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 229:
-#line 1618 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 5518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 230:
-#line 1623 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
}
-#line 5528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 231:
-#line 1628 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
-#line 5538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 232:
-#line 1633 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
-#line 5548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 233:
-#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
}
-#line 5558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 234:
-#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
-#line 5568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 235:
-#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
}
-#line 5578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 236:
-#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
-#line 5588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 237:
-#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
-#line 5598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 238:
-#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
-#line 5608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 239:
-#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 5618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 240:
-#line 1673 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 5628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 241:
-#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1679 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 5638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 242:
-#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1684 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 5648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 243:
-#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
}
-#line 5658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 244:
-#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1694 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
-#line 5668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 245:
-#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1699 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
}
-#line 5678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 246:
-#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 5688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 247:
-#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 248:
-#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 5708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 249:
-#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 5718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 250:
-#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
-#line 5728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 251:
-#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
}
-#line 5738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 252:
-#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
-#line 5748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 253:
-#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1739 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 5758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 254:
-#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1744 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
-#line 5768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 255:
-#line 1748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 5778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 256:
-#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 5788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 257:
-#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 5798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 258:
-#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 5808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 259:
-#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1769 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 260:
-#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1774 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
-#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 261:
-#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1779 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
-#line 5838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 262:
-#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1784 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
-#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 263:
-#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
-#line 5858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 264:
-#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
-#line 5868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 265:
-#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1799 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
-#line 5878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 266:
-#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1804 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 5888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 267:
-#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1809 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 268:
-#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 5908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 269:
-#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 5918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 270:
-#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 5928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 271:
-#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 5938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 272:
-#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
-#line 5948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 273:
-#line 1838 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
}
-#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 274:
-#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
}
-#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 275:
-#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 276:
-#line 1853 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 277:
-#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 278:
-#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 279:
-#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
-#line 6018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 280:
-#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1874 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
}
-#line 6028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 281:
-#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
}
-#line 6038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 282:
-#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 6048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 283:
-#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 6058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 284:
-#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1894 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 6068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 285:
-#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 6078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 286:
-#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1904 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
-#line 6088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 287:
-#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
}
-#line 6098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 288:
-#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
}
-#line 6108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 289:
-#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1919 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 6118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 290:
-#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 6128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 291:
-#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 292:
-#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 6148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 293:
-#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 6158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 294:
-#line 1943 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 6168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 295:
-#line 1948 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1949 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
-#line 6178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 296:
-#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1954 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
-#line 6188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 297:
-#line 1958 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
-#line 6198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 298:
-#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
-#line 6208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 299:
-#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
-#line 6218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 300:
-#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
-#line 6228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 301:
-#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 6238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 302:
-#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 6248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 303:
-#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 6258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 304:
-#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1994 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 6268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 305:
-#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 6278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 306:
-#line 2003 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 6288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6289 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 307:
-#line 2008 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2009 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 6298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 308:
-#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2014 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 6308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 309:
-#line 2018 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 6318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 310:
-#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 6328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 311:
-#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 6338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 312:
-#line 2033 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 313:
-#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2039 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 6358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 314:
-#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2044 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 6368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 315:
-#line 2048 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 6378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 316:
-#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2054 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 6388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 317:
-#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 6398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 318:
-#line 2063 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 6408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 319:
-#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2069 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
-#line 6418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 320:
-#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2074 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
-#line 6428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 321:
-#line 2078 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
-#line 6438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 322:
-#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2084 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
-#line 6448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 323:
-#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
-#line 6458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6459 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 324:
-#line 2093 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
-#line 6468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 325:
-#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
-#line 6478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 326:
-#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2104 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
-#line 6488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 327:
-#line 2108 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2109 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
-#line 6498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 328:
-#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2114 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
-#line 6508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 329:
-#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
-#line 6518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 330:
-#line 2123 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
-#line 6528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 331:
-#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2129 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
-#line 6538 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 332:
-#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2134 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
-#line 6548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 333:
-#line 2138 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
-#line 6558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 334:
-#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2144 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // GL_OES_EGL_image_external
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
-#line 6569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 335:
-#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2150 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
-#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 336:
-#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2156 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
-#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 337:
-#line 2161 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2162 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
-#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 338:
-#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2168 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
-#line 6613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 339:
-#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
-#line 6624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 340:
-#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
-#line 6635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 341:
-#line 2185 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2186 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
-#line 6645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 342:
-#line 2190 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -6659,16 +6660,15 @@
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 343:
-#line 2206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2207 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- (yyval.interm.type).qualifier.precision = EpqHigh;
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
#line 6674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
@@ -6678,31 +6678,29 @@
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- (yyval.interm.type).qualifier.precision = EpqMedium;
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
-#line 6685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 345:
-#line 2218 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- if (parseContext.profile == EEsProfile)
- (yyval.interm.type).qualifier.precision = EpqLow;
+ parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
-#line 6696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 346:
-#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 6702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 347:
-#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -6714,17 +6712,17 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 6718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 348:
-#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 6724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 349:
-#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2236 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -6732,19 +6730,19 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 6736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 350:
-#line 2248 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2246 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 6744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 351:
-#line 2251 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -6755,11 +6753,11 @@
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 352:
-#line 2264 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -6778,11 +6776,11 @@
(*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
-#line 6782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 353:
-#line 2282 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2280 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier);
if ((yyvsp[-2].interm.type).arraySizes) {
@@ -6804,38 +6802,38 @@
(*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type));
}
}
-#line 6808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 354:
-#line 2306 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2304 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 6817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 355:
-#line 2310 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2308 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 356:
-#line 2316 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2314 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
-#line 6835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 357:
-#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0);
@@ -6844,219 +6842,219 @@
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes);
}
-#line 6848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 358:
-#line 2332 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 359:
-#line 2335 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2333 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
-#line 6867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 360:
-#line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 6878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 361:
-#line 2350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2348 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
-#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 362:
-#line 2353 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 6894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 363:
-#line 2359 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 364:
-#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 365:
-#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 366:
-#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 367:
-#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 368:
-#line 2372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 369:
-#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 370:
-#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 371:
-#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 372:
-#line 2376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 373:
-#line 2380 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2378 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 6960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 374:
-#line 2381 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 6969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 375:
-#line 2385 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 6978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 376:
-#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2387 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 6988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 377:
-#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 6994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 378:
-#line 2398 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 7000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 379:
-#line 2402 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2400 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
-#line 7008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 380:
-#line 2405 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 381:
-#line 2409 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 382:
-#line 2414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 383:
-#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2421 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 7046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 384:
-#line 2426 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2424 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 385:
-#line 2434 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -7065,11 +7063,11 @@
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 7069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 386:
-#line 2442 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2440 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -7078,59 +7076,59 @@
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 7082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 387:
-#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 7088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 388:
-#line 2454 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2452 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 389:
-#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 7103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 390:
-#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2463 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 7112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 391:
-#line 2469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 7121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 392:
-#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 7130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 393:
-#line 2481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -7141,11 +7139,11 @@
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 7145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7143 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 394:
-#line 2494 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -7154,11 +7152,11 @@
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 395:
-#line 2502 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -7168,27 +7166,27 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 7172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 396:
-#line 2514 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 7180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 397:
-#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 398:
-#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2521 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -7201,11 +7199,11 @@
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 7205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 399:
-#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2533 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -7215,11 +7213,11 @@
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 7219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 400:
-#line 2547 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -7228,11 +7226,11 @@
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 401:
-#line 2555 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -7240,21 +7238,21 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 7244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 402:
-#line 2562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2560 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 403:
-#line 2567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2565 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -7266,22 +7264,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 404:
-#line 2578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 405:
-#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2582 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -7294,81 +7292,81 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 406:
-#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2597 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 407:
-#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2600 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 408:
-#line 2608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2606 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 7322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 409:
-#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 7330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 410:
-#line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 7339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 411:
-#line 2621 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 7348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 412:
-#line 2628 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 413:
-#line 2633 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2631 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 7368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 414:
-#line 2638 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -7376,71 +7374,71 @@
if (parseContext.inMain)
parseContext.postMainReturn = true;
}
-#line 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 415:
-#line 2645 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2643 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 7388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 416:
-#line 2648 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 417:
-#line 2657 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 7406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 418:
-#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2659 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 7415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 419:
-#line 2668 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2666 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 420:
-#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2669 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 7431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 421:
-#line 2677 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
}
-#line 7440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 422:
-#line 2681 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2679 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -7456,11 +7454,11 @@
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
}
-#line 7460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
-#line 7464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7462 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -7688,5 +7686,5 @@
#endif
return yyresult;
}
-#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1906 */
+#line 2696 "MachineIndependent/glslang.y" /* yacc.c:1906 */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 893f42b..0ef37c4 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -38,11 +38,9 @@
#include "../Include/InfoSink.h"
#ifdef _MSC_VER
-#include <float.h>
-#elif defined __ANDROID__ || defined __linux__ || __MINGW32__ || __MINGW64__
-#include <cmath>
+#include <cfloat>
#else
-#include <math.h>
+#include <cmath>
#endif
namespace {
@@ -50,10 +48,8 @@
bool is_positive_infinity(double x) {
#ifdef _MSC_VER
return _fpclass(x) == _FPCLASS_PINF;
-#elif defined __ANDROID__ || defined __linux__ || __MINGW32__ || __MINGW64__
- return std::isinf(x) && (x >= 0);
#else
- return isinf(x) && (x >= 0);
+ return std::isinf(x) && (x >= 0);
#endif
}
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 0bc1d91..f213dd6 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -75,13 +75,13 @@
if (source != unit.source)
error(infoSink, "can't link compilation units from different source languages");
- if (source == EShSourceHlsl && unit.entryPoint.size() > 0) {
- if (entryPoint.size() > 0)
+ if (source == EShSourceHlsl && unit.getNumEntryPoints() > 0) {
+ if (getNumEntryPoints() > 0)
error(infoSink, "can't handle multiple entry points per stage");
else
- entryPoint = unit.entryPoint;
+ entryPointName = unit.entryPointName;
}
- numMains += unit.numMains;
+ numEntryPoints += unit.numEntryPoints;
numErrors += unit.numErrors;
numPushConstants += unit.numPushConstants;
callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end());
@@ -370,8 +370,8 @@
//
void TIntermediate::finalCheck(TInfoSink& infoSink)
{
- if (source == EShSourceGlsl && numMains < 1)
- error(infoSink, "Missing entry point: Each stage requires one \"void main()\" entry point");
+ if (source == EShSourceGlsl && numEntryPoints < 1)
+ error(infoSink, "Missing entry point: Each stage requires one entry point");
if (numPushConstants > 1)
error(infoSink, "Only one push_constant block is allowed per stage");
@@ -664,37 +664,93 @@
size = computeTypeLocationSize(type);
}
- // locations...
- TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
+ // Locations, and components within locations.
+ //
+ // Almost always, dealing with components means a single location is involved.
+ // The exception is a dvec3. From the spec:
+ //
+ // "A dvec3 will consume all four components of the first location and components 0 and 1 of
+ // the second location. This leaves components 2 and 3 available for other component-qualified
+ // declarations."
+ //
+ // That means, without ever mentioning a component, a component range
+ // for a different location gets specified, if it's not a vertex shader input. (!)
+ // (A vertex shader input will show using only one location, even for a dvec3/4.)
+ //
+ // So, for the case of dvec3, we need two independent ioRanges.
- // components in this location slot...
- TRange componentRange(0, 3);
- if (qualifier.hasComponent() || type.getVectorSize() > 0) {
- int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
- if (qualifier.hasComponent())
- componentRange.start = qualifier.layoutComponent;
- componentRange.last = componentRange.start + consumedComponents - 1;
+ int collision = -1; // no collision
+ if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
+ (qualifier.isPipeInput() || qualifier.isPipeOutput())) {
+ // Dealing with dvec3 in/out split across two locations.
+ // Need two io-ranges.
+ // The case where the dvec3 doesn't start at component 0 was previously caught as overflow.
+
+ // First range:
+ TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation);
+ TRange componentRange(0, 3);
+ TIoRange range(locationRange, componentRange, type.getBasicType(), 0);
+
+ // check for collisions
+ collision = checkLocationRange(set, range, type, typeCollision);
+ if (collision < 0) {
+ usedIo[set].push_back(range);
+
+ // Second range:
+ TRange locationRange2(qualifier.layoutLocation + 1, qualifier.layoutLocation + 1);
+ TRange componentRange2(0, 1);
+ TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0);
+
+ // check for collisions
+ collision = checkLocationRange(set, range2, type, typeCollision);
+ if (collision < 0)
+ usedIo[set].push_back(range2);
+ }
+ } else {
+ // Not a dvec3 in/out split across two locations, generic path.
+ // Need a single IO-range block.
+
+ TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
+ TRange componentRange(0, 3);
+ if (qualifier.hasComponent() || type.getVectorSize() > 0) {
+ int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
+ if (qualifier.hasComponent())
+ componentRange.start = qualifier.layoutComponent;
+ componentRange.last = componentRange.start + consumedComponents - 1;
+ }
+
+ // combine location and component ranges
+ TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0);
+
+ // check for collisions, except for vertex inputs on desktop
+ if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput()))
+ collision = checkLocationRange(set, range, type, typeCollision);
+
+ if (collision < 0)
+ usedIo[set].push_back(range);
}
- // both...
- TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0);
+ return collision;
+}
- // check for collisions, except for vertex inputs on desktop
- if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput())) {
- for (size_t r = 0; r < usedIo[set].size(); ++r) {
- if (range.overlap(usedIo[set][r])) {
- // there is a collision; pick one
- return std::max(locationRange.start, usedIo[set][r].location.start);
- } else if (locationRange.overlap(usedIo[set][r].location) && type.getBasicType() != usedIo[set][r].basicType) {
- // aliased-type mismatch
- typeCollision = true;
- return std::max(locationRange.start, usedIo[set][r].location.start);
- }
+// Compare a new (the passed in) 'range' against the existing set, and see
+// if there are any collisions.
+//
+// Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value.
+//
+int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TType& type, bool& typeCollision)
+{
+ for (size_t r = 0; r < usedIo[set].size(); ++r) {
+ if (range.overlap(usedIo[set][r])) {
+ // there is a collision; pick one
+ return std::max(range.location.start, usedIo[set][r].location.start);
+ } else if (range.location.overlap(usedIo[set][r].location) && type.getBasicType() != usedIo[set][r].basicType) {
+ // aliased-type mismatch
+ typeCollision = true;
+ return std::max(range.location.start, usedIo[set][r].location.start);
}
}
- usedIo[set].push_back(range);
-
return -1; // no collision
}
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index 7bd457d..3ce615e 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -137,7 +137,7 @@
public:
explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) :
source(EShSourceNone), language(l), profile(p), version(v), treeRoot(0),
- numMains(0), numErrors(0), numPushConstants(0), recursive(false),
+ numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone),
pixelCenterInteger(false), originUpperLeft(false),
vertexSpacing(EvsNone), vertexOrder(EvoNone), pointMode(false), earlyFragmentTests(false), depthLayout(EldNone), depthReplacing(false), blendEquations(0),
@@ -159,8 +159,10 @@
void setSource(EShSource s) { source = s; }
EShSource getSource() const { return source; }
- void setEntryPoint(const char* ep) { entryPoint = ep; }
- const std::string& getEntryPoint() const { return entryPoint; }
+ void setEntryPointName(const char* ep) { entryPointName = ep; }
+ void setEntryPointMangledName(const char* ep) { entryPointMangledName = ep; }
+ const std::string& getEntryPointName() const { return entryPointName; }
+ const std::string& getEntryPointMangledName() const { return entryPointMangledName; }
void setVersion(int v) { version = v; }
int getVersion() const { return version; }
void setProfile(EProfile p) { profile = p; }
@@ -173,8 +175,8 @@
void setTreeRoot(TIntermNode* r) { treeRoot = r; }
TIntermNode* getTreeRoot() const { return treeRoot; }
- void addMainCount() { ++numMains; }
- int getNumMains() const { return numMains; }
+ void incrementEntryPointCount() { ++numEntryPoints; }
+ int getNumEntryPoints() const { return numEntryPoints; }
int getNumErrors() const { return numErrors; }
void addPushConstantCount() { ++numPushConstants; }
bool isRecursive() const { return recursive; }
@@ -189,7 +191,7 @@
TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc);
TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, TSourceLoc);
TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType);
- bool canImplicitlyPromote(TBasicType from, TBasicType to) const;
+ bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const;
TOperator mapTypeToConstructorOp(const TType&) const;
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right);
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&);
@@ -331,6 +333,7 @@
bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); }
int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision);
+ int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision);
int addUsedOffsets(int binding, int offset, int numOffsets);
bool addUsedConstantId(int id);
int computeTypeLocationSize(const TType&) const;
@@ -362,14 +365,15 @@
const EShLanguage language; // stage, known at construction time
EShSource source; // source language, known a bit later
- std::string entryPoint;
+ std::string entryPointName;
+ std::string entryPointMangledName;
EProfile profile;
int version;
SpvVersion spvVersion;
TIntermNode* treeRoot;
std::set<std::string> requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them
TBuiltInResource resources;
- int numMains;
+ int numEntryPoints;
int numErrors;
int numPushConstants;
bool recursive;
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index d771010..d28e7be 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -81,12 +81,10 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <stdarg.h>
-#include <stdio.h>
#include <sstream>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
#include "PpContext.h"
#include "PpTokens.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpAtom.cpp b/glslang/MachineIndependent/preprocessor/PpAtom.cpp
index 7a59d48..2b21193 100644
--- a/glslang/MachineIndependent/preprocessor/PpAtom.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpAtom.cpp
@@ -82,10 +82,9 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
#include "PpTokens.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp
index 6f0b8a9..6791fef 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp
@@ -76,8 +76,7 @@
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdlib>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpMemory.cpp b/glslang/MachineIndependent/preprocessor/PpMemory.cpp
index 57a49fb..6158a38 100644
--- a/glslang/MachineIndependent/preprocessor/PpMemory.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpMemory.cpp
@@ -76,10 +76,9 @@
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index 5ce5a03..7daebb3 100644
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -81,10 +81,8 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
#include "PpTokens.h"
@@ -698,7 +696,7 @@
}
//
-// The main functional entry-point into the preprocessor, which will
+// The main functional entry point into the preprocessor, which will
// scan the source strings to figure out and return the next processing token.
//
// Return string pointer to next token.
@@ -749,7 +747,12 @@
tokenString = ppToken->name;
break;
case PpAtomConstString:
- parseContext.ppError(ppToken->loc, "string literals not supported", "\"\"", "");
+ if (parseContext.intermediate.getSource() == EShSourceHlsl) {
+ // HLSL allows string literals.
+ tokenString = ppToken->name;
+ } else {
+ parseContext.ppError(ppToken->loc, "string literals not supported", "\"\"", "");
+ }
break;
case '\'':
parseContext.ppError(ppToken->loc, "character literals not supported", "\'", "");
@@ -759,12 +762,8 @@
break;
}
- if (tokenString) {
- if (tokenString[0] != 0)
- parseContext.tokensBeforeEOF = 1;
-
+ if (tokenString)
return tokenString;
- }
}
}
diff --git a/glslang/MachineIndependent/preprocessor/PpSymbols.cpp b/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
index c2ab7c0..b7f1df5 100644
--- a/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
@@ -79,10 +79,9 @@
// symbols.c
//
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 61883c9..f5a0513 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -85,11 +85,10 @@
#define snprintf sprintf_s
#endif
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
#include "PpContext.h"
#include "PpTokens.h"
@@ -225,7 +224,6 @@
ppToken->dval = atof(ppToken->name);
break;
case PpAtomConstInt:
- case PpAtomConstUint:
if (len > 0 && tokenText[0] == '0') {
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
ppToken->ival = strtol(ppToken->name, 0, 16);
@@ -234,8 +232,16 @@
} else
ppToken->ival = atoi(ppToken->name);
break;
+ case PpAtomConstUint:
+ if (len > 0 && tokenText[0] == '0') {
+ if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
+ ppToken->ival = (int)strtoul(ppToken->name, 0, 16);
+ else
+ ppToken->ival = (int)strtoul(ppToken->name, 0, 8);
+ } else
+ ppToken->ival = (int)strtoul(ppToken->name, 0, 10);
+ break;
case PpAtomConstInt64:
- case PpAtomConstUint64:
if (len > 0 && tokenText[0] == '0') {
if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
ppToken->i64val = strtoll(ppToken->name, nullptr, 16);
@@ -244,6 +250,15 @@
} else
ppToken->i64val = atoll(ppToken->name);
break;
+ case PpAtomConstUint64:
+ if (len > 0 && tokenText[0] == '0') {
+ if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X'))
+ ppToken->i64val = (long long)strtoull(ppToken->name, nullptr, 16);
+ else
+ ppToken->i64val = (long long)strtoull(ppToken->name, nullptr, 8);
+ } else
+ ppToken->i64val = (long long)strtoull(ppToken->name, 0, 10);
+ break;
}
}
diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp
index d3e04af..d557765 100644
--- a/glslang/MachineIndependent/reflection.cpp
+++ b/glslang/MachineIndependent/reflection.cpp
@@ -1,5 +1,5 @@
//
-//Copyright (C) 2013 LunarG, Inc.
+//Copyright (C) 2013-2016 LunarG, Inc.
//
//All rights reserved.
//
@@ -35,6 +35,7 @@
#include "../Include/Common.h"
#include "reflection.h"
+#include "LiveTraverser.h"
#include "localintermediate.h"
#include "gl_types.h"
@@ -48,7 +49,7 @@
//
// High-level algorithm for one stage:
//
-// 1. Put main() on list of live functions.
+// 1. Put the entry point on the list of live functions.
//
// 2. Traverse any live function, while skipping if-tests with a compile-time constant
// condition of false, and while adding any encountered function calls to the live
@@ -59,40 +60,29 @@
// 3. Add any encountered uniform variables and blocks to the reflection database.
//
// Can be attempted with a failed link, but will return false if recursion had been detected, or
-// there wasn't exactly one main.
+// there wasn't exactly one entry point.
//
+
namespace glslang {
//
// The traverser: mostly pass through, except
-// - processing function-call nodes to push live functions onto the stack of functions to process
// - processing binary nodes to see if they are dereferences of an aggregates to track
// - processing symbol nodes to see if they are non-aggregate objects to track
-// - processing selection nodes to trim semantically dead code
+//
+// This ignores semantically dead code by using TLiveTraverser.
//
// This is in the glslang namespace directly so it can be a friend of TReflection.
//
-class TLiveTraverser : public TIntermTraverser {
+class TReflectionTraverser : public TLiveTraverser {
public:
- TLiveTraverser(const TIntermediate& i, TReflection& r) : intermediate(i), reflection(r) { }
+ TReflectionTraverser(const TIntermediate& i, TReflection& r) :
+ TLiveTraverser(i), reflection(r) { }
- virtual bool visitAggregate(TVisit, TIntermAggregate* node);
virtual bool visitBinary(TVisit, TIntermBinary* node);
virtual void visitSymbol(TIntermSymbol* base);
- virtual bool visitSelection(TVisit, TIntermSelection* node);
-
- // Track live funtions as well as uniforms, so that we don't visit dead functions
- // and only visit each function once.
- void addFunctionCall(TIntermAggregate* call)
- {
- // just use the map to ensure we process each function at most once
- if (reflection.nameToIndex.find(call->getName()) == reflection.nameToIndex.end()) {
- reflection.nameToIndex[call->getName()] = -1;
- pushFunction(call->getName());
- }
- }
// Add a simple reference to a uniform variable to the uniform database, no dereference involved.
// However, no dereference doesn't mean simple... it could be a complex aggregate.
@@ -358,21 +348,6 @@
return blockIndex;
}
- //
- // Given a function name, find its subroot in the tree, and push it onto the stack of
- // functions left to process.
- //
- void pushFunction(const TString& name)
- {
- TIntermSequence& globals = intermediate.getTreeRoot()->getAsAggregate()->getSequence();
- for (unsigned int f = 0; f < globals.size(); ++f) {
- TIntermAggregate* candidate = globals[f]->getAsAggregate();
- if (candidate && candidate->getOp() == EOpFunction && candidate->getName() == name) {
- functions.push_back(candidate);
- break;
- }
- }
- }
// Are we at a level in a dereference chain at which individual active uniform queries are made?
bool isReflectionGranularity(const TType& type)
@@ -639,33 +614,21 @@
return type.isArray() ? type.getOuterArraySize() : 1;
}
- typedef std::list<TIntermAggregate*> TFunctionStack;
- TFunctionStack functions;
- const TIntermediate& intermediate;
TReflection& reflection;
std::set<const TIntermNode*> processedDerefs;
protected:
- TLiveTraverser(TLiveTraverser&);
- TLiveTraverser& operator=(TLiveTraverser&);
+ TReflectionTraverser(TReflectionTraverser&);
+ TReflectionTraverser& operator=(TReflectionTraverser&);
};
//
// Implement the traversal functions of interest.
//
-// To catch which function calls are not dead, and hence which functions must be visited.
-bool TLiveTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node)
-{
- if (node->getOp() == EOpFunctionCall)
- addFunctionCall(node);
-
- return true; // traverse this subtree
-}
-
// To catch dereferenced aggregates that must be reflected.
// This catches them at the highest level possible in the tree.
-bool TLiveTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node)
+bool TReflectionTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node)
{
switch (node->getOp()) {
case EOpIndexDirect:
@@ -683,7 +646,7 @@
}
// To reflect non-dereferenced objects.
-void TLiveTraverser::visitSymbol(TIntermSymbol* base)
+void TReflectionTraverser::visitSymbol(TIntermSymbol* base)
{
if (base->getQualifier().storage == EvqUniform)
addUniform(*base);
@@ -692,21 +655,6 @@
addAttribute(*base);
}
-// To prune semantically dead paths.
-bool TLiveTraverser::visitSelection(TVisit /* visit */, TIntermSelection* node)
-{
- TIntermConstantUnion* constant = node->getCondition()->getAsConstantUnion();
- if (constant) {
- // cull the path that is dead
- if (constant->getConstArray()[0].getBConst() == true && node->getTrueBlock())
- node->getTrueBlock()->traverse(this);
- if (constant->getConstArray()[0].getBConst() == false && node->getFalseBlock())
- node->getFalseBlock()->traverse(this);
-
- return false; // don't traverse any more, we did it all above
- } else
- return true; // traverse the whole subtree
-}
//
// Implement TReflection methods.
@@ -717,13 +665,13 @@
// Returns false if the input is too malformed to do this.
bool TReflection::addStage(EShLanguage, const TIntermediate& intermediate)
{
- if (intermediate.getNumMains() != 1 || intermediate.isRecursive())
+ if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive())
return false;
- TLiveTraverser it(intermediate, *this);
+ TReflectionTraverser it(intermediate, *this);
- // put main() on functions to process
- it.pushFunction("main(");
+ // put the entry point on the list of functions to process
+ it.pushFunction(intermediate.getEntryPointMangledName().c_str());
// process all the functions
while (! it.functions.empty()) {
diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h
index 5d930c7..8880602 100644
--- a/glslang/MachineIndependent/reflection.h
+++ b/glslang/MachineIndependent/reflection.h
@@ -49,7 +49,7 @@
class TIntermediate;
class TIntermAggregate;
-class TLiveTraverser;
+class TReflectionTraverser;
// Data needed for just a single object at the granularity exchanged by the reflection API
class TObjectReflection {
@@ -116,7 +116,7 @@
void dump();
protected:
- friend class glslang::TLiveTraverser;
+ friend class glslang::TReflectionTraverser;
// Need a TString hash: typedef std::unordered_map<TString, int> TNameToIndex;
typedef std::map<TString, int> TNameToIndex;
diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp
index 1d09fd3..f71fac9 100644
--- a/glslang/OSDependent/Windows/ossource.cpp
+++ b/glslang/OSDependent/Windows/ossource.cpp
@@ -37,14 +37,14 @@
#define STRICT
#define VC_EXTRALEAN 1
#include <windows.h>
-#include <assert.h>
+#include <cassert>
#include <process.h>
#include <psapi.h>
-#include <stdio.h>
-#include <stdint.h>
+#include <cstdio>
+#include <cstdint>
//
-// This file contains contains the Window-OS-specific functions
+// This file contains the Window-OS-specific functions
//
#if !(defined(_WIN32) || defined(_WIN64))
@@ -55,12 +55,12 @@
inline OS_TLSIndex ToGenericTLSIndex (DWORD handle)
{
- return (OS_TLSIndex)((uintptr_t)handle + 1);
+ return (OS_TLSIndex)((uintptr_t)handle + 1);
}
inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex)
{
- return (DWORD)((uintptr_t)nIndex - 1);
+ return (DWORD)((uintptr_t)nIndex - 1);
}
//
@@ -68,46 +68,46 @@
//
OS_TLSIndex OS_AllocTLSIndex()
{
- DWORD dwIndex = TlsAlloc();
- if (dwIndex == TLS_OUT_OF_INDEXES) {
- assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
- return OS_INVALID_TLS_INDEX;
- }
+ DWORD dwIndex = TlsAlloc();
+ if (dwIndex == TLS_OUT_OF_INDEXES) {
+ assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
+ return OS_INVALID_TLS_INDEX;
+ }
- return ToGenericTLSIndex(dwIndex);
+ return ToGenericTLSIndex(dwIndex);
}
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
+ if (nIndex == OS_INVALID_TLS_INDEX) {
+ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
+ return false;
+ }
- if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
- return true;
- else
- return false;
+ if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
+ return true;
+ else
+ return false;
}
void* OS_GetTLSValue(OS_TLSIndex nIndex)
{
- assert(nIndex != OS_INVALID_TLS_INDEX);
- return TlsGetValue(ToNativeTLSIndex(nIndex));
+ assert(nIndex != OS_INVALID_TLS_INDEX);
+ return TlsGetValue(ToNativeTLSIndex(nIndex));
}
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
+ if (nIndex == OS_INVALID_TLS_INDEX) {
+ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
+ return false;
+ }
- if (TlsFree(ToNativeTLSIndex(nIndex)))
- return true;
- else
- return false;
+ if (TlsFree(ToNativeTLSIndex(nIndex)))
+ return true;
+ else
+ return false;
}
HANDLE GlobalLock;
@@ -129,7 +129,7 @@
unsigned int __stdcall EnterGenericThread (void* entry)
{
- return ((TThreadEntrypoint)entry)(0);
+ return ((TThreadEntrypoint)entry)(0);
}
void* OS_CreateThread(TThreadEntrypoint entry)
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 4b4d0fc..d112159 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -37,7 +37,7 @@
#include "../Include/ResourceLimits.h"
#include "../MachineIndependent/Versions.h"
-#include <string.h>
+#include <cstring>
#ifdef _WIN32
#define C_DECL __cdecl
diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt
index 4aafd11..8a91eef 100644
--- a/gtests/CMakeLists.txt
+++ b/gtests/CMakeLists.txt
@@ -18,6 +18,8 @@
${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp
${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp
+ # -- Remapper tests
+ ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp
)
add_executable(glslangtests ${TEST_SOURCES})
@@ -34,7 +36,7 @@
${gmock_SOURCE_DIR}/include
${gtest_SOURCE_DIR}/include)
target_link_libraries(glslangtests PRIVATE
- glslang OSDependent OGLCompiler HLSL glslang
+ SPVRemapper glslang OSDependent OGLCompiler HLSL glslang
SPIRV glslang-default-resource-limits gmock)
add_test(NAME glslang-gtests COMMAND glslangtests)
endif()
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 0d99d1e..01cc032 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -81,8 +81,12 @@
{"hlsl.cast.frag", "PixelShaderFunction"},
{"hlsl.conditional.frag", "PixelShaderFunction"},
{"hlsl.constructexpr.frag", "main"},
+ {"hlsl.depthGreater.frag", "PixelShaderFunction"},
+ {"hlsl.depthLess.frag", "PixelShaderFunction"},
{"hlsl.discard.frag", "PixelShaderFunction"},
{"hlsl.doLoop.frag", "PixelShaderFunction"},
+ {"hlsl.entry-in.frag", "PixelShaderFunction"},
+ {"hlsl.entry-out.frag", "PixelShaderFunction"},
{"hlsl.float1.frag", "PixelShaderFunction"},
{"hlsl.float4.frag", "PixelShaderFunction"},
{"hlsl.forLoop.frag", "PixelShaderFunction"},
@@ -107,11 +111,12 @@
{"hlsl.intrinsics.evalfns.frag", "main"},
{"hlsl.intrinsics.double.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.f1632.frag", "PixelShaderFunction"},
- {"hlsl.intrinsics.frag", "PixelShaderFunction"},
+ {"hlsl.intrinsics.frag", "main"},
{"hlsl.intrinsics.lit.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.comp", "ComputeShaderFunction"},
{"hlsl.intrinsics.negative.frag", "PixelShaderFunction"},
{"hlsl.intrinsics.negative.vert", "VertexShaderFunction"},
+ {"hlsl.layout.frag", "main"},
{"hlsl.load.2dms.dx10.frag", "main"},
{"hlsl.load.array.dx10.frag", "main"},
{"hlsl.load.basic.dx10.frag", "main"},
@@ -119,8 +124,13 @@
{"hlsl.load.buffer.dx10.frag", "main"},
{"hlsl.load.offset.dx10.frag", "main"},
{"hlsl.load.offsetarray.dx10.frag", "main"},
+ {"hlsl.multiEntry.vert", "RealEntrypoint"},
+ {"hlsl.matrixindex.frag", "main"},
{"hlsl.numericsuffixes.frag", "main"},
+ {"hlsl.overload.frag", "PixelShaderFunction"},
{"hlsl.pp.line.frag", "main"},
+ {"hlsl.precise.frag", "main"},
+ {"hlsl.promotions.frag", "main"},
{"hlsl.sample.array.dx10.frag", "main"},
{"hlsl.sample.basic.dx10.frag", "main"},
{"hlsl.sample.offset.dx10.frag", "main"},
@@ -149,6 +159,9 @@
{"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
{"hlsl.semicolons.frag", "main"},
{"hlsl.shapeConv.frag", "main"},
+ {"hlsl.stringtoken.frag", "main"},
+ {"hlsl.string.frag", "main"},
+ {"hlsl.structin.vert", "main"},
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
{"hlsl.matType.frag", "PixelShaderFunction"},
{"hlsl.max.frag", "PixelShaderFunction"},
diff --git a/gtests/Initializer.h b/gtests/Initializer.h
index 34af9ad..b46b3f5 100644
--- a/gtests/Initializer.h
+++ b/gtests/Initializer.h
@@ -40,46 +40,14 @@
namespace glslangtest {
// Initializes glslang on creation, and destroys it on completion.
-// And provides .Acquire() as a way to reinitialize glslang if semantics change.
// This object is expected to be a singleton, so that internal glslang state
// can be correctly handled.
//
-// TODO(antiagainst): It's a known bug that some of the internal states need to
-// be reset if semantics change:
-// https://github.com/KhronosGroup/glslang/issues/166
-// Therefore, the following mechanism is needed. Remove this once the above bug
-// gets fixed.
class GlslangInitializer {
public:
- GlslangInitializer() : lastMessages(EShMsgCascadingErrors)
- {
- glslang::InitializeProcess();
- }
+ GlslangInitializer() { glslang::InitializeProcess(); }
~GlslangInitializer() { glslang::FinalizeProcess(); }
-
- // A token indicates that the glslang is reinitialized (if necessary) to the
- // required semantics. And that won't change until the token is destroyed.
- class InitializationToken {
- };
-
- // Re-initializes glsl state iff the previous messages and the current
- // messages are incompatible. We assume external synchronization, i.e.
- // there is at most one acquired token at any one time.
- InitializationToken acquire(EShMessages new_messages)
- {
- if ((lastMessages ^ new_messages) &
- (EShMsgVulkanRules | EShMsgSpvRules | EShMsgReadHlsl)) {
- glslang::FinalizeProcess();
- glslang::InitializeProcess();
- }
- lastMessages = new_messages;
- return InitializationToken();
- }
-
-private:
-
- EShMessages lastMessages;
};
} // namespace glslangtest
diff --git a/gtests/Remap.FromFile.cpp b/gtests/Remap.FromFile.cpp
new file mode 100644
index 0000000..cd246ea
--- /dev/null
+++ b/gtests/Remap.FromFile.cpp
@@ -0,0 +1,117 @@
+//
+// Copyright (C) 2016 LunarG, Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#include <gtest/gtest.h>
+
+#include "TestFixture.h"
+
+namespace glslangtest {
+namespace {
+
+struct RemapTestArgs {
+ const char* fileName;
+ const char* entryPoint;
+ Source sourceLanguage;
+ unsigned int remapOpts;
+};
+
+// We are using FileNameEntryPointPair objects as parameters for instantiating
+// the template, so the global FileNameAsCustomTestSuffix() won't work since
+// it assumes std::string as parameters. Thus, an overriding one here.
+std::string FileNameAsCustomTestSuffix(
+ const ::testing::TestParamInfo<RemapTestArgs>& info) {
+ std::string name = info.param.fileName;
+ // A valid test case suffix cannot have '.' and '-' inside.
+ std::replace(name.begin(), name.end(), '.', '_');
+ std::replace(name.begin(), name.end(), '-', '_');
+ return name;
+}
+
+using RemapTest = GlslangTest<::testing::TestWithParam<RemapTestArgs>>;
+
+// Remapping SPIR-V modules.
+TEST_P(RemapTest, FromFile)
+{
+ if (GetSuffix(GetParam().fileName) == "spv") {
+ loadFileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
+ GetParam().sourceLanguage,
+ Semantics::Vulkan,
+ Target::Spv,
+ GetParam().remapOpts);
+ } else {
+ loadFileCompileRemapAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName,
+ GetParam().sourceLanguage,
+ Semantics::Vulkan,
+ Target::Spv,
+ GetParam().entryPoint,
+ GetParam().remapOpts);
+ }
+}
+
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
+ ToSpirv, RemapTest,
+ ::testing::ValuesIn(std::vector<RemapTestArgs>{
+ // GLSL remapper tests
+ // testname entry language remapper_options
+ { "remap.basic.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.basic.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.basic.dcefunc.frag", "main", Source::GLSL, spv::spirvbin_t::DCE_FUNCS },
+ { "remap.basic.strip.frag", "main", Source::GLSL, spv::spirvbin_t::STRIP },
+ { "remap.switch.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.switch.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.literal64.none.spv", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.literal64.everything.spv", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.if.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.if.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.similar_1a.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.similar_1b.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.similar_1a.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.similar_1b.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.uniformarray.none.frag", "main", Source::GLSL, spv::spirvbin_t::NONE },
+ { "remap.uniformarray.everything.frag", "main", Source::GLSL, spv::spirvbin_t::DO_EVERYTHING },
+
+ // HLSL remapper tests
+ { "remap.hlsl.sample.basic.strip.frag", "main", Source::HLSL, spv::spirvbin_t::STRIP },
+ { "remap.hlsl.sample.basic.everything.frag", "main", Source::HLSL, spv::spirvbin_t::DO_EVERYTHING },
+ { "remap.hlsl.sample.basic.none.frag", "main", Source::HLSL, spv::spirvbin_t::NONE },
+ { "remap.hlsl.templatetypes.none.frag", "main", Source::HLSL, spv::spirvbin_t::NONE },
+ { "remap.hlsl.templatetypes.everything.frag", "main", Source::HLSL, spv::spirvbin_t::DO_EVERYTHING },
+ }),
+ FileNameAsCustomTestSuffix
+);
+// clang-format on
+
+} // anonymous namespace
+} // namespace glslangtest
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index a8f3dd8..45fed04 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -164,6 +164,8 @@
"spv.matrix2.frag",
"spv.memoryQualifier.frag",
"spv.merge-unreachable.frag",
+ "spv.multiStruct.comp",
+ "spv.multiStructFuncall.frag",
"spv.newTexture.frag",
"spv.noDeadDecorations.vert",
"spv.nonSquare.vert",
diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp
index f170f36..1dff65a 100644
--- a/gtests/TestFixture.cpp
+++ b/gtests/TestFixture.cpp
@@ -116,6 +116,32 @@
return std::make_pair(false, "");
}
+std::pair<bool, std::vector<std::uint32_t> > ReadSpvBinaryFile(const std::string& path)
+{
+ std::ifstream fstream(path, std::fstream::in | std::fstream::binary);
+
+ if (!fstream)
+ return std::make_pair(false, std::vector<std::uint32_t>());
+
+ std::vector<std::uint32_t> contents;
+
+ // Reserve space (for efficiency, not for correctness)
+ fstream.seekg(0, fstream.end);
+ contents.reserve(size_t(fstream.tellg()) / sizeof(std::uint32_t));
+ fstream.seekg(0, fstream.beg);
+
+ // There is no istream iterator traversing by uint32_t, so we must loop.
+ while (!fstream.eof()) {
+ std::uint32_t inWord;
+ fstream.read((char *)&inWord, sizeof(inWord));
+
+ if (!fstream.eof())
+ contents.push_back(inWord);
+ }
+
+ return std::make_pair(true, contents); // hopefully, c++11 move semantics optimizes the copy away.
+}
+
bool WriteFile(const std::string& path, const std::string& contents)
{
std::ofstream fstream(path, std::ios::out);
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 8dffb80..8193012 100644
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -35,17 +35,19 @@
#ifndef GLSLANG_GTESTS_TEST_FIXTURE_H
#define GLSLANG_GTESTS_TEST_FIXTURE_H
-#include <stdint.h>
+#include <cstdint>
#include <fstream>
#include <sstream>
#include <streambuf>
#include <tuple>
+#include <string>
#include <gtest/gtest.h>
#include "SPIRV/GlslangToSpv.h"
#include "SPIRV/disassemble.h"
#include "SPIRV/doc.h"
+#include "SPIRV/SPVRemapper.h"
#include "StandAlone/ResourceLimits.h"
#include "glslang/Public/ShaderLang.h"
@@ -93,6 +95,7 @@
// Reads the content of the file at the given |path|. On success, returns true
// and the contents; otherwise, returns false and an empty string.
std::pair<bool, std::string> ReadFile(const std::string& path);
+std::pair<bool, std::vector<std::uint32_t> > ReadSpvBinaryFile(const std::string& path);
// Writes the given |contents| into the file at the given |path|. Returns true
// on successful output.
@@ -128,6 +131,16 @@
ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path;
}
+ // Tries to load the contents from the file at the given |path|. On success,
+ // writes the contents into |contents|. On failure, errors out.
+ void tryLoadSpvFile(const std::string& path, const std::string& tag,
+ std::vector<uint32_t>& contents)
+ {
+ bool fileReadOk;
+ std::tie(fileReadOk, contents) = ReadSpvBinaryFile(path);
+ ASSERT_TRUE(fileReadOk) << "Cannot open " << tag << " file: " << path;
+ }
+
// Checks the equality of |expected| and |real|. If they are not equal,
// write |real| to the given file named as |fname| if update mode is on.
void checkEqAndUpdateIfRequested(const std::string& expected,
@@ -179,8 +192,6 @@
shader->setStringsWithLengths(&shaderStrings, &shaderLengths, 1);
if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str());
- // Reinitialize glslang if the semantics change.
- GlobalTestSettings.initializer->acquire(controls);
return shader->parse(
(resources ? resources : &glslang::DefaultTBuiltInResource),
defaultVersion, isForwardCompatible, controls);
@@ -223,6 +234,68 @@
}
}
+ // This is like compileAndLink but with remapping of the SPV binary
+ // through spirvbin_t::remap(). While technically this could be merged
+ // with compileAndLink() above (with the remap step optionally being a no-op)
+ // it is given separately here for ease of future extraction.
+ GlslangResult compileLinkRemap(
+ const std::string shaderName, const std::string& code,
+ const std::string& entryPointName, EShMessages controls,
+ const unsigned int remapOptions = spv::spirvbin_t::NONE)
+ {
+ const EShLanguage kind = GetShaderStage(GetSuffix(shaderName));
+
+ glslang::TShader shader(kind);
+ bool success = compile(&shader, code, entryPointName, controls);
+
+ glslang::TProgram program;
+ program.addShader(&shader);
+ success &= program.link(controls);
+
+ spv::SpvBuildLogger logger;
+
+ if (success && (controls & EShMsgSpvRules)) {
+ std::vector<uint32_t> spirv_binary;
+ glslang::GlslangToSpv(*program.getIntermediate(kind),
+ spirv_binary, &logger);
+
+ spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
+
+ std::ostringstream disassembly_stream;
+ spv::Parameterize();
+ spv::Disassemble(disassembly_stream, spirv_binary);
+ return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
+ program.getInfoLog(), program.getInfoDebugLog(),
+ logger.getAllMessages(), disassembly_stream.str()};
+ } else {
+ return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},},
+ program.getInfoLog(), program.getInfoDebugLog(), "", ""};
+ }
+ }
+
+ // remap the binary in 'code' with the options in remapOptions
+ GlslangResult remap(
+ const std::string shaderName, const std::vector<uint32_t>& code,
+ EShMessages controls,
+ const unsigned int remapOptions = spv::spirvbin_t::NONE)
+ {
+ if ((controls & EShMsgSpvRules)) {
+ std::vector<uint32_t> spirv_binary(code); // scratch copy
+
+ spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions);
+
+ std::ostringstream disassembly_stream;
+ spv::Parameterize();
+ spv::Disassemble(disassembly_stream, spirv_binary);
+
+ return {{{shaderName, "", ""},},
+ "", "",
+ "", disassembly_stream.str()};
+ } else {
+ return {{{shaderName, "", ""},}, "", "", "", ""};
+ }
+ }
+
void outputResultToStream(std::ostringstream* stream,
const GlslangResult& result,
EShMessages controls)
@@ -274,6 +347,60 @@
expectedOutputFname);
}
+ void loadFileCompileRemapAndCheck(const std::string& testDir,
+ const std::string& testName,
+ Source source,
+ Semantics semantics,
+ Target target,
+ const std::string& entryPointName="",
+ const unsigned int remapOptions = spv::spirvbin_t::NONE)
+ {
+ const std::string inputFname = testDir + "/" + testName;
+ const std::string expectedOutputFname =
+ testDir + "/baseResults/" + testName + ".out";
+ std::string input, expectedOutput;
+
+ tryLoadFile(inputFname, "input", &input);
+ tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
+
+ const EShMessages controls = DeriveOptions(source, semantics, target);
+ GlslangResult result = compileLinkRemap(testName, input, entryPointName, controls, remapOptions);
+
+ // Generate the hybrid output in the way of glslangValidator.
+ std::ostringstream stream;
+ outputResultToStream(&stream, result, controls);
+
+ checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
+ expectedOutputFname);
+ }
+
+ void loadFileRemapAndCheck(const std::string& testDir,
+ const std::string& testName,
+ Source source,
+ Semantics semantics,
+ Target target,
+ const unsigned int remapOptions = spv::spirvbin_t::NONE)
+ {
+ const std::string inputFname = testDir + "/" + testName;
+ const std::string expectedOutputFname =
+ testDir + "/baseResults/" + testName + ".out";
+ std::vector<std::uint32_t> input;
+ std::string expectedOutput;
+
+ tryLoadSpvFile(inputFname, "input", input);
+ tryLoadFile(expectedOutputFname, "expected output", &expectedOutput);
+
+ const EShMessages controls = DeriveOptions(source, semantics, target);
+ GlslangResult result = remap(testName, input, controls, remapOptions);
+
+ // Generate the hybrid output in the way of glslangValidator.
+ std::ostringstream stream;
+ outputResultToStream(&stream, result, controls);
+
+ checkEqAndUpdateIfRequested(expectedOutput, stream.str(),
+ expectedOutputFname);
+ }
+
// Preprocesses the given |source| code. On success, returns true, the
// preprocessed shader, and warning messages. Otherwise, returns false, an
// empty string, and error messages.
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 64e8b9f..0762514 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -274,8 +274,14 @@
TType type;
// DX9 sampler declaration use a different syntax
- if (acceptSamplerDeclarationDX9(type))
- return true;
+ // DX9 shaders need to run through HLSL compiler (fxc) via a back compat mode, it isn't going to
+ // be possible to simultaneously compile D3D10+ style shaders and DX9 shaders. If we want to compile DX9
+ // HLSL shaders, this will have to be a master level switch
+ // As such, the sampler keyword in D3D10+ turns into an automatic sampler type, and is commonly used
+ // For that reason, this line is commented out
+
+ // if (acceptSamplerDeclarationDX9(type))
+ // return true;
// fully_specified_type
if (! acceptFullySpecifiedType(type))
@@ -296,10 +302,10 @@
HlslToken idToken;
while (acceptIdentifier(idToken)) {
// function_parameters
- TFunction* function = new TFunction(idToken.string, type);
- if (acceptFunctionParameters(*function)) {
+ TFunction& function = *new TFunction(idToken.string, type);
+ if (acceptFunctionParameters(function)) {
// post_decls
- acceptPostDecls(type);
+ acceptPostDecls(function.getWritableType().getQualifier());
// compound_statement (function body definition) or just a prototype?
if (peekTokenClass(EHTokLeftBrace)) {
@@ -307,11 +313,11 @@
parseContext.error(idToken.loc, "function body can't be in a declarator list", "{", "");
if (typedefDecl)
parseContext.error(idToken.loc, "function body can't be in a typedef", "{", "");
- return acceptFunctionDefinition(*function, node);
+ return acceptFunctionDefinition(function, node);
} else {
if (typedefDecl)
parseContext.error(idToken.loc, "function typedefs not implemented", "{", "");
- parseContext.handleFunctionDeclarator(idToken.loc, *function, true);
+ parseContext.handleFunctionDeclarator(idToken.loc, function, true);
}
} else {
// a variable declaration
@@ -327,7 +333,7 @@
}
// post_decls
- acceptPostDecls(type);
+ acceptPostDecls(type.getQualifier());
// EQUAL assignment_expression
TIntermTyped* expressionNode = nullptr;
@@ -420,7 +426,8 @@
// type_qualifier
TQualifier qualifier;
qualifier.clear();
- acceptQualifier(qualifier);
+ if (! acceptQualifier(qualifier))
+ return false;
TSourceLoc loc = token.loc;
// type_specifier
@@ -428,7 +435,7 @@
return false;
if (type.getBasicType() == EbtBlock) {
// the type was a block, which set some parts of the qualifier
- parseContext.mergeQualifiers(loc, type.getQualifier(), qualifier, true);
+ parseContext.mergeQualifiers(type.getQualifier(), qualifier);
// further, it can create an anonymous instance of the block
if (peekTokenClass(EHTokSemicolon))
parseContext.declareBlock(loc, type);
@@ -443,7 +450,7 @@
//
// Zero or more of these, so this can't return false.
//
-void HlslGrammar::acceptQualifier(TQualifier& qualifier)
+bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
{
do {
switch (peek()) {
@@ -469,7 +476,6 @@
qualifier.volatil = true;
break;
case EHTokLinear:
- qualifier.storage = EvqVaryingIn;
qualifier.smooth = true;
break;
case EHTokCentroid:
@@ -502,13 +508,66 @@
case EHTokInOut:
qualifier.storage = EvqInOut;
break;
+ case EHTokLayout:
+ if (! acceptLayoutQualifierList(qualifier))
+ return false;
+ continue;
default:
- return;
+ return true;
}
advanceToken();
} while (true);
}
+// layout_qualifier_list
+// : LAYOUT LEFT_PAREN layout_qualifier COMMA layout_qualifier ... RIGHT_PAREN
+//
+// layout_qualifier
+// : identifier
+// | identifier EQUAL expression
+//
+// Zero or more of these, so this can't return false.
+//
+bool HlslGrammar::acceptLayoutQualifierList(TQualifier& qualifier)
+{
+ if (! acceptTokenClass(EHTokLayout))
+ return false;
+
+ // LEFT_PAREN
+ if (! acceptTokenClass(EHTokLeftParen))
+ return false;
+
+ do {
+ // identifier
+ HlslToken idToken;
+ if (! acceptIdentifier(idToken))
+ break;
+
+ // EQUAL expression
+ if (acceptTokenClass(EHTokAssign)) {
+ TIntermTyped* expr;
+ if (! acceptConditionalExpression(expr)) {
+ expected("expression");
+ return false;
+ }
+ parseContext.setLayoutQualifier(idToken.loc, qualifier, *idToken.string, expr);
+ } else
+ parseContext.setLayoutQualifier(idToken.loc, qualifier, *idToken.string);
+
+ // COMMA
+ if (! acceptTokenClass(EHTokComma))
+ break;
+ } while (true);
+
+ // RIGHT_PAREN
+ if (! acceptTokenClass(EHTokRightParen)) {
+ expected(")");
+ return false;
+ }
+
+ return true;
+}
+
// template_type
// : FLOAT
// | DOUBLE
@@ -651,8 +710,8 @@
return false;
new(&type) TType(basicType, EvqTemporary, 0,
- cols->getAsConstantUnion()->getConstArray()[0].getIConst(),
- rows->getAsConstantUnion()->getConstArray()[0].getIConst());
+ rows->getAsConstantUnion()->getConstArray()[0].getIConst(),
+ cols->getAsConstantUnion()->getConstArray()[0].getIConst());
if (!acceptTokenClass(EHTokRightAngle)) {
expected("right angle bracket");
@@ -662,6 +721,54 @@
return true;
}
+// string_template_type
+// : STRING
+// | STRING identifier LEFT_ANGLE declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE
+//
+bool HlslGrammar::acceptStringTemplateType(TType& type)
+{
+ // STRING
+ if (! acceptTokenClass(EHTokString))
+ return false;
+
+ // no matter what happens next, we recognized a string type
+ new(&type) TType(EbtString);
+
+ // identifier LEFT_ANGLE, or not?
+ if (! acceptTokenClass(EHTokIdentifier)) {
+ expected("identifier following 'string'");
+ return false;
+ }
+
+ if (! peekTokenClass(EHTokLeftAngle)) {
+ // then it must be the non-template version, back up and let
+ // normal declaration code handle it
+
+ // recede the identifier
+ recedeToken();
+ return true;
+ }
+
+ // move past the LEFT_ANGLE
+ advanceToken();
+
+ // declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE
+ do {
+ // eat any extra SEMI_COLON; don't know if the grammar calls for this or not
+ while (acceptTokenClass(EHTokSemicolon))
+ ;
+
+ if (acceptTokenClass(EHTokRightAngle))
+ return true;
+
+ // declaration
+ TIntermNode* node;
+ if (! acceptDeclaration(node)) {
+ expected("declaration in string list");
+ return false;
+ }
+ } while (true);
+}
// sampler_type
// : SAMPLER
@@ -835,6 +942,10 @@
return acceptMatrixTemplateType(type);
break;
+ case EHTokString:
+ return acceptStringTemplateType(type);
+ break;
+
case EHTokSampler: // fall through
case EHTokSampler1d: // ...
case EHTokSampler2d: // ...
@@ -971,46 +1082,46 @@
new(&type) TType(EbtInt, EvqTemporary, 0, 1, 1);
break;
case EHTokInt1x2:
- new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2);
break;
case EHTokInt1x3:
- new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3);
break;
case EHTokInt1x4:
- new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4);
break;
case EHTokInt2x1:
- new(&type) TType(EbtInt, EvqTemporary, 0, 1, 2);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 2, 1);
break;
case EHTokInt2x2:
new(&type) TType(EbtInt, EvqTemporary, 0, 2, 2);
break;
case EHTokInt2x3:
- new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3);
break;
case EHTokInt2x4:
- new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4);
break;
case EHTokInt3x1:
- new(&type) TType(EbtInt, EvqTemporary, 0, 1, 3);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 3, 1);
break;
case EHTokInt3x2:
- new(&type) TType(EbtInt, EvqTemporary, 0, 2, 3);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 3, 2);
break;
case EHTokInt3x3:
new(&type) TType(EbtInt, EvqTemporary, 0, 3, 3);
break;
case EHTokInt3x4:
- new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4);
break;
case EHTokInt4x1:
- new(&type) TType(EbtInt, EvqTemporary, 0, 1, 4);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 4, 1);
break;
case EHTokInt4x2:
- new(&type) TType(EbtInt, EvqTemporary, 0, 2, 4);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 4, 2);
break;
case EHTokInt4x3:
- new(&type) TType(EbtInt, EvqTemporary, 0, 3, 4);
+ new(&type) TType(EbtInt, EvqTemporary, 0, 4, 3);
break;
case EHTokInt4x4:
new(&type) TType(EbtInt, EvqTemporary, 0, 4, 4);
@@ -1020,46 +1131,46 @@
new(&type) TType(EbtUint, EvqTemporary, 0, 1, 1);
break;
case EHTokUint1x2:
- new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2);
break;
case EHTokUint1x3:
- new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3);
break;
case EHTokUint1x4:
- new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4);
break;
case EHTokUint2x1:
- new(&type) TType(EbtUint, EvqTemporary, 0, 1, 2);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 2, 1);
break;
case EHTokUint2x2:
new(&type) TType(EbtUint, EvqTemporary, 0, 2, 2);
break;
case EHTokUint2x3:
- new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3);
break;
case EHTokUint2x4:
- new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4);
break;
case EHTokUint3x1:
- new(&type) TType(EbtUint, EvqTemporary, 0, 1, 3);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 3, 1);
break;
case EHTokUint3x2:
- new(&type) TType(EbtUint, EvqTemporary, 0, 2, 3);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 3, 2);
break;
case EHTokUint3x3:
new(&type) TType(EbtUint, EvqTemporary, 0, 3, 3);
break;
case EHTokUint3x4:
- new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4);
break;
case EHTokUint4x1:
- new(&type) TType(EbtUint, EvqTemporary, 0, 1, 4);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 4, 1);
break;
case EHTokUint4x2:
- new(&type) TType(EbtUint, EvqTemporary, 0, 2, 4);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 4, 2);
break;
case EHTokUint4x3:
- new(&type) TType(EbtUint, EvqTemporary, 0, 3, 4);
+ new(&type) TType(EbtUint, EvqTemporary, 0, 4, 3);
break;
case EHTokUint4x4:
new(&type) TType(EbtUint, EvqTemporary, 0, 4, 4);
@@ -1069,46 +1180,46 @@
new(&type) TType(EbtBool, EvqTemporary, 0, 1, 1);
break;
case EHTokBool1x2:
- new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2);
break;
case EHTokBool1x3:
- new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3);
break;
case EHTokBool1x4:
- new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4);
break;
case EHTokBool2x1:
- new(&type) TType(EbtBool, EvqTemporary, 0, 1, 2);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 2, 1);
break;
case EHTokBool2x2:
new(&type) TType(EbtBool, EvqTemporary, 0, 2, 2);
break;
case EHTokBool2x3:
- new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3);
break;
case EHTokBool2x4:
- new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4);
break;
case EHTokBool3x1:
- new(&type) TType(EbtBool, EvqTemporary, 0, 1, 3);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 3, 1);
break;
case EHTokBool3x2:
- new(&type) TType(EbtBool, EvqTemporary, 0, 2, 3);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 3, 2);
break;
case EHTokBool3x3:
new(&type) TType(EbtBool, EvqTemporary, 0, 3, 3);
break;
case EHTokBool3x4:
- new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4);
break;
case EHTokBool4x1:
- new(&type) TType(EbtBool, EvqTemporary, 0, 1, 4);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 4, 1);
break;
case EHTokBool4x2:
- new(&type) TType(EbtBool, EvqTemporary, 0, 2, 4);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 4, 2);
break;
case EHTokBool4x3:
- new(&type) TType(EbtBool, EvqTemporary, 0, 3, 4);
+ new(&type) TType(EbtBool, EvqTemporary, 0, 4, 3);
break;
case EHTokBool4x4:
new(&type) TType(EbtBool, EvqTemporary, 0, 4, 4);
@@ -1118,46 +1229,46 @@
new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 1);
break;
case EHTokFloat1x2:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2);
break;
case EHTokFloat1x3:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3);
break;
case EHTokFloat1x4:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4);
break;
case EHTokFloat2x1:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 2);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 1);
break;
case EHTokFloat2x2:
new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 2);
break;
case EHTokFloat2x3:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3);
break;
case EHTokFloat2x4:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4);
break;
case EHTokFloat3x1:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 3);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 1);
break;
case EHTokFloat3x2:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 3);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 2);
break;
case EHTokFloat3x3:
new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 3);
break;
case EHTokFloat3x4:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4);
break;
case EHTokFloat4x1:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 1, 4);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 1);
break;
case EHTokFloat4x2:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 2, 4);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 2);
break;
case EHTokFloat4x3:
- new(&type) TType(EbtFloat, EvqTemporary, 0, 3, 4);
+ new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 3);
break;
case EHTokFloat4x4:
new(&type) TType(EbtFloat, EvqTemporary, 0, 4, 4);
@@ -1167,46 +1278,46 @@
new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 1);
break;
case EHTokDouble1x2:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2);
break;
case EHTokDouble1x3:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3);
break;
case EHTokDouble1x4:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4);
break;
case EHTokDouble2x1:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 2);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 1);
break;
case EHTokDouble2x2:
new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 2);
break;
case EHTokDouble2x3:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3);
break;
case EHTokDouble2x4:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4);
break;
case EHTokDouble3x1:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 3);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 1);
break;
case EHTokDouble3x2:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 3);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 2);
break;
case EHTokDouble3x3:
new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 3);
break;
case EHTokDouble3x4:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4);
break;
case EHTokDouble4x1:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 1, 4);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 1);
break;
case EHTokDouble4x2:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 2, 4);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 2);
break;
case EHTokDouble4x3:
- new(&type) TType(EbtDouble, EvqTemporary, 0, 3, 4);
+ new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 3);
break;
case EHTokDouble4x4:
new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4);
@@ -1232,17 +1343,16 @@
//
bool HlslGrammar::acceptStruct(TType& type)
{
- // This qualifier.storage will tell us whether it's an AST block or
- // just a struct.
- TQualifier qualifier;
- qualifier.clear();
+ // This storage qualifier will tell us whether it's an AST
+ // block type or just a generic structure type.
+ TStorageQualifier storageQualifier = EvqTemporary;
// CBUFFER
if (acceptTokenClass(EHTokCBuffer))
- qualifier.storage = EvqUniform;
+ storageQualifier = EvqUniform;
// TBUFFER
else if (acceptTokenClass(EHTokTBuffer))
- qualifier.storage = EvqBuffer;
+ storageQualifier = EvqBuffer;
// STRUCT
else if (! acceptTokenClass(EHTokStruct))
return false;
@@ -1255,7 +1365,9 @@
}
// post_decls
- acceptPostDecls(type);
+ TQualifier postDeclQualifier;
+ postDeclQualifier.clear();
+ acceptPostDecls(postDeclQualifier);
// LEFT_BRACE
if (! acceptTokenClass(EHTokLeftBrace)) {
@@ -1277,10 +1389,12 @@
}
// create the user-defined type
- if (qualifier.storage == EvqTemporary)
+ if (storageQualifier == EvqTemporary)
new(&type) TType(typeList, structName);
- else
- new(&type) TType(typeList, structName, qualifier); // sets EbtBlock
+ else {
+ postDeclQualifier.storage = storageQualifier;
+ new(&type) TType(typeList, structName, postDeclQualifier); // sets EbtBlock
+ }
// If it was named, which means the type can be reused later, add
// it to the symbol table. (Unless it's a block, in which
@@ -1345,7 +1459,7 @@
if (arraySizes)
typeList->back().type->newArraySizes(*arraySizes);
- acceptPostDecls(*member.type);
+ acceptPostDecls(member.type->getQualifier());
// success on seeing the SEMICOLON coming up
if (peekTokenClass(EHTokSemicolon))
@@ -1422,7 +1536,7 @@
type->newArraySizes(*arraySizes);
// post_decls
- acceptPostDecls(*type);
+ acceptPostDecls(type->getQualifier());
parseContext.paramFix(*type);
@@ -1436,19 +1550,16 @@
// parsing the body (compound_statement).
bool HlslGrammar::acceptFunctionDefinition(TFunction& function, TIntermNode*& node)
{
- TFunction* functionDeclarator = parseContext.handleFunctionDeclarator(token.loc, function, false /* not prototype */);
+ TFunction& functionDeclarator = parseContext.handleFunctionDeclarator(token.loc, function, false /* not prototype */);
+ TSourceLoc loc = token.loc;
// This does a pushScope()
- node = parseContext.handleFunctionDefinition(token.loc, *functionDeclarator);
+ node = parseContext.handleFunctionDefinition(loc, functionDeclarator);
// compound_statement
TIntermNode* functionBody = nullptr;
if (acceptCompoundStatement(functionBody)) {
- node = intermediate.growAggregate(node, functionBody);
- intermediate.setAggregateOperator(node, EOpFunction, functionDeclarator->getType(), token.loc);
- node->getAsAggregate()->setName(functionDeclarator->getMangledName().c_str());
- parseContext.popScope();
-
+ parseContext.handleFunctionBody(loc, functionDeclarator, functionBody, node);
return true;
}
@@ -1612,7 +1723,7 @@
return false;
}
- node = intermediate.addAssign(assignOp, node, rightNode, loc);
+ node = parseContext.handleAssign(loc, assignOp, node, rightNode);
if (node == nullptr) {
parseContext.error(loc, "could not create assignment", "", "");
return false;
@@ -2003,6 +2114,9 @@
case EHTokBoolConstant:
node = intermediate.addConstantUnion(token.b, token.loc, true);
break;
+ case EHTokStringConstant:
+ node = nullptr;
+ break;
default:
return false;
@@ -2440,7 +2554,7 @@
TIntermTyped* node;
if (acceptExpression(node)) {
// hook it up
- statement = intermediate.addBranch(EOpReturn, node, token.loc);
+ statement = parseContext.handleReturnValue(token.loc, node);
} else
statement = intermediate.addBranch(EOpReturn, token.loc);
break;
@@ -2531,18 +2645,21 @@
}
// post_decls
-// : COLON semantic // optional
-// COLON PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN // optional
-// COLON REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt RIGHT_PAREN // optional
-// annotations // optional
+// : COLON semantic // optional
+// COLON PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN // optional
+// COLON REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN // optional
+// COLON LAYOUT layout_qualifier_list
+// annotations // optional
//
-void HlslGrammar::acceptPostDecls(TType& type)
+void HlslGrammar::acceptPostDecls(TQualifier& qualifier)
{
do {
// COLON
if (acceptTokenClass(EHTokColon)) {
HlslToken idToken;
- if (acceptTokenClass(EHTokPackOffset)) {
+ if (peekTokenClass(EHTokLayout))
+ acceptLayoutQualifierList(qualifier);
+ else if (acceptTokenClass(EHTokPackOffset)) {
// PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN
if (! acceptTokenClass(EHTokLeftParen)) {
expected("(");
@@ -2564,12 +2681,13 @@
expected(")");
break;
}
- parseContext.handlePackOffset(locationToken.loc, type, *locationToken.string, componentToken.string);
+ parseContext.handlePackOffset(locationToken.loc, qualifier, *locationToken.string, componentToken.string);
} else if (! acceptIdentifier(idToken)) {
- expected("semantic or packoffset or register");
+ expected("layout, semantic, packoffset, or register");
return;
} else if (*idToken.string == "register") {
- // REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt RIGHT_PAREN
+ // REGISTER LEFT_PAREN [shader_profile,] Type#[subcomp]opt (COMMA SPACEN)opt RIGHT_PAREN
+ // LEFT_PAREN
if (! acceptTokenClass(EHTokLeftParen)) {
expected("(");
return;
@@ -2580,7 +2698,8 @@
expected("register number description");
return;
}
- if (acceptTokenClass(EHTokComma)) {
+ if (registerDesc.string->size() > 1 && !isdigit((*registerDesc.string)[1]) &&
+ acceptTokenClass(EHTokComma)) {
// Then we didn't really see the registerDesc yet, it was
// actually the profile. Adjust...
profile = registerDesc;
@@ -2603,14 +2722,23 @@
break;
}
}
+ // (COMMA SPACEN)opt
+ HlslToken spaceDesc;
+ if (acceptTokenClass(EHTokComma)) {
+ if (! acceptIdentifier(spaceDesc)) {
+ expected ("space identifier");
+ return;
+ }
+ }
+ // RIGHT_PAREN
if (! acceptTokenClass(EHTokRightParen)) {
expected(")");
break;
}
- parseContext.handleRegister(registerDesc.loc, type, profile.string, *registerDesc.string, subComponent);
+ parseContext.handleRegister(registerDesc.loc, qualifier, profile.string, *registerDesc.string, subComponent, spaceDesc.string);
} else {
// semantic, in idToken.string
- parseContext.handleSemantic(type, *idToken.string);
+ parseContext.handleSemantic(idToken.loc, qualifier, *idToken.string);
}
} else if (acceptTokenClass(EHTokLeftAngle)) {
// TODO: process annotations, just accepting them for now
diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h
index c522df4..f5c7d4d 100755
--- a/hlsl/hlslGrammar.h
+++ b/hlsl/hlslGrammar.h
@@ -67,11 +67,13 @@
bool acceptSamplerDeclarationDX9(TType&);
bool acceptSamplerState();
bool acceptFullySpecifiedType(TType&);
- void acceptQualifier(TQualifier&);
+ bool acceptQualifier(TQualifier&);
+ bool acceptLayoutQualifierList(TQualifier&);
bool acceptType(TType&);
bool acceptTemplateType(TBasicType&);
bool acceptVectorTemplateType(TType&);
bool acceptMatrixTemplateType(TType&);
+ bool acceptStringTemplateType(TType&);
bool acceptSamplerType(TType&);
bool acceptTextureType(TType&);
bool acceptStruct(TType&);
@@ -104,7 +106,7 @@
bool acceptCaseLabel(TIntermNode*&);
bool acceptDefaultLabel(TIntermNode*&);
void acceptArraySpecifier(TArraySizes*&);
- void acceptPostDecls(TType&);
+ void acceptPostDecls(TQualifier&);
HlslParseContext& parseContext; // state of parsing and helper functions for building the intermediate
TIntermediate& intermediate; // the final product, the intermediate representation, includes the AST
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index fc926d7..9018606 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -43,7 +43,7 @@
#include "../glslang/OSDependent/osinclude.h"
-#include <stdarg.h>
+#include <cstdarg>
#include <algorithm>
namespace glslang {
@@ -55,7 +55,8 @@
contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0),
postMainReturn(false),
limits(resources.limits),
- afterEOF(false)
+ entryPointOutput(nullptr),
+ nextInLocation(0), nextOutLocation(0)
{
// ensure we always have a linkage node, even if empty, to simplify tree topology algorithms
linkage = new TIntermAggregate;
@@ -82,6 +83,9 @@
if (language == EShLangGeometry)
globalOutputDefaults.layoutStream = 0;
+
+ if (spvVersion.spv == 0 || spvVersion.vulkan == 0)
+ infoSink.info << "ERROR: HLSL currently only supported when requesting SPIR-V for Vulkan.\n";
}
HlslParseContext::~HlslParseContext()
@@ -116,8 +120,14 @@
HlslScanContext scanContext(*this, ppContext);
HlslGrammar grammar(scanContext, *this);
- if (! grammar.parse())
- printf("HLSL translation failed.\n");
+ if (!grammar.parse()) {
+ // Print a message formated such that if you click on the message it will take you right to
+ // the line through most UIs.
+ const glslang::TSourceLoc& sourceLoc = input.getSourceLoc();
+ infoSink.info << sourceLoc.name << "(" << sourceLoc.line << "): error at column " << sourceLoc.column << ", HLSL parsing failed.\n";
+ ++numErrors;
+ return false;
+ }
return numErrors == 0;
}
@@ -636,6 +646,15 @@
return addConstructor(loc, base, type);
}
}
+ if (base->getVectorSize() == 1) {
+ TType scalarType(base->getBasicType(), EvqTemporary, 1);
+ if (fields.num == 1)
+ return addConstructor(loc, base, scalarType);
+ else {
+ TType vectorType(base->getBasicType(), EvqTemporary, fields.num);
+ return addConstructor(loc, addConstructor(loc, base, scalarType), vectorType);
+ }
+ }
if (base->getType().getQualifier().isFrontEndConstant())
result = intermediate.foldSwizzle(base, fields, loc);
@@ -662,12 +681,16 @@
}
}
if (fieldFound) {
- if (base->getType().getQualifier().storage == EvqConst)
- result = intermediate.foldDereference(base, member, loc);
+ if (base->getAsSymbolNode() && shouldFlatten(base->getType()))
+ result = flattenAccess(base, member);
else {
- TIntermTyped* index = intermediate.addConstantUnion(member, loc);
- result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
- result->setType(*(*fields)[member].type);
+ if (base->getType().getQualifier().storage == EvqConst)
+ result = intermediate.foldDereference(base, member, loc);
+ else {
+ TIntermTyped* index = intermediate.addConstantUnion(member, loc);
+ result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc);
+ result->setType(*(*fields)[member].type);
+ }
}
} else
error(loc, "no such field in structure", field.c_str(), "");
@@ -677,11 +700,97 @@
return result;
}
+// Is this an aggregate that can't be passed down the stack?
+// E.g., pipeline inputs to the vertex stage and outputs from the fragment stage.
+bool HlslParseContext::shouldFlatten(const TType& type) const
+{
+ if (! inEntryPoint)
+ return false;
+
+ const TStorageQualifier qualifier = type.getQualifier().storage;
+
+ return type.isStruct() &&
+ (qualifier == EvqVaryingIn ||
+ qualifier == EvqVaryingOut);
+}
+
+// Figure out the mapping between an aggregate's top members and an
+// equivalent set of individual variables.
+//
+// N.B. Erases memory of I/O-related annotations in the original type's member,
+// effecting a transfer of this information to the flattened variable form.
+//
+// Assumes shouldFlatten() or equivalent was called first.
+//
+// TODO: generalize this to arbitrary nesting?
+void HlslParseContext::flatten(const TVariable& variable)
+{
+ TVector<TVariable*> memberVariables;
+
+ auto members = *variable.getType().getStruct();
+ for (int member = 0; member < (int)members.size(); ++member) {
+ TVariable* memberVariable = makeInternalVariable(members[member].type->getFieldName().c_str(),
+ *members[member].type);
+ mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier());
+ memberVariables.push_back(memberVariable);
+
+ // N.B. Erase I/O-related annotations from the source-type member.
+ members[member].type->getQualifier().makeTemporary();
+ }
+
+ flattenMap[variable.getUniqueId()] = memberVariables;
+}
+
+// Turn an access into aggregate that was flattened to instead be
+// an access to the individual variable the element/member was flattened to.
+// Assumes shouldFlatten() or equivalent was called first.
+TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member)
+{
+ const TIntermSymbol& symbolNode = *base->getAsSymbolNode();
+
+ if (flattenMap.find(symbolNode.getId()) == flattenMap.end())
+ return base;
+
+ const TVariable* memberVariable = flattenMap[symbolNode.getId()][member];
+ return intermediate.addSymbol(*memberVariable);
+}
+
+// Variables that correspond to the user-interface in and out of a stage
+// (not the built-in interface) are assigned locations and
+// registered as a linkage node (part of the stage's external interface).
+//
+// Assumes it is called in the order in which locations should be assigned.
+void HlslParseContext::assignLocations(TVariable& variable)
+{
+ const auto assignLocation = [&](TVariable& variable) {
+ const TQualifier& qualifier = variable.getType().getQualifier();
+ if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
+ if (qualifier.builtIn == EbvNone) {
+ if (qualifier.storage == EvqVaryingIn) {
+ variable.getWritableType().getQualifier().layoutLocation = nextInLocation;
+ nextInLocation += intermediate.computeTypeLocationSize(variable.getType());
+ } else {
+ variable.getWritableType().getQualifier().layoutLocation = nextOutLocation;
+ nextOutLocation += intermediate.computeTypeLocationSize(variable.getType());
+ }
+ }
+ intermediate.addSymbolLinkageNode(linkage, variable);
+ }
+ };
+
+ if (shouldFlatten(variable.getType())) {
+ auto& memberList = flattenMap[variable.getUniqueId()];
+ for (auto member = memberList.begin(); member != memberList.end(); ++member)
+ assignLocation(**member);
+ } else
+ assignLocation(variable);
+}
+
//
// Handle seeing a function declarator in the grammar. This is the precursor
// to recognizing a function prototype or function definition.
//
-TFunction* HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction& function, bool prototype)
+TFunction& HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction& function, bool prototype)
{
//
// Multiple declarations of the same function name are allowed.
@@ -715,7 +824,7 @@
// in which case, we need to use the parameter names from this one, and not the one that's
// being redeclared. So, pass back this declaration, not the one in the symbol table.
//
- return &function;
+ return function;
}
//
@@ -747,12 +856,18 @@
currentFunctionType = new TType(EbtVoid);
functionReturnsValue = false;
- inEntrypoint = (function.getName() == intermediate.getEntryPoint().c_str());
- if (inEntrypoint) {
- // parameters are actually shader-level inputs
- for (int i = 0; i < function.getParamCount(); i++)
- function[i].type->getQualifier().storage = EvqVaryingIn;
- }
+ inEntryPoint = function.getName().compare(intermediate.getEntryPointName().c_str()) == 0;
+ if (inEntryPoint) {
+ intermediate.setEntryPointMangledName(function.getMangledName().c_str());
+ intermediate.incrementEntryPointCount();
+ remapEntryPointIO(function);
+ if (entryPointOutput) {
+ if (shouldFlatten(entryPointOutput->getType()))
+ flatten(*entryPointOutput);
+ assignLocations(*entryPointOutput);
+ }
+ } else
+ remapNonEntryPointIO(function);
//
// New symbol table scope for body of function plus its arguments
@@ -764,7 +879,7 @@
// If the parameter has no name, it's not an error, just don't insert it
// (could be used for unused args).
//
- // Also, accumulate the list of parameters into the HIL, so lower level code
+ // Also, accumulate the list of parameters into the AST, so lower level code
// knows where to find parameters.
//
TIntermAggregate* paramNodes = new TIntermAggregate;
@@ -777,13 +892,20 @@
if (! symbolTable.insert(*variable))
error(loc, "redefinition", variable->getName().c_str(), "");
else {
+ // get IO straightened out
+ if (inEntryPoint) {
+ if (shouldFlatten(*param.type))
+ flatten(*variable);
+ assignLocations(*variable);
+ }
+
// Transfer ownership of name pointer to symbol table.
param.name = nullptr;
- // Add the parameter to the HIL
+ // Add the parameter to the AST
paramNodes = intermediate.growAggregate(paramNodes,
- intermediate.addSymbol(*variable, loc),
- loc);
+ intermediate.addSymbol(*variable, loc),
+ loc);
}
} else
paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*param.type, loc), loc);
@@ -796,6 +918,117 @@
return paramNodes;
}
+void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& function, TIntermNode* functionBody, TIntermNode*& node)
+{
+ node = intermediate.growAggregate(node, functionBody);
+ intermediate.setAggregateOperator(node, EOpFunction, function.getType(), loc);
+ node->getAsAggregate()->setName(function.getMangledName().c_str());
+
+ popScope();
+
+ if (function.getType().getBasicType() != EbtVoid && ! functionReturnsValue)
+ error(loc, "function does not return a value:", "", function.getName().c_str());
+}
+
+// AST I/O is done through shader globals declared in the 'in' or 'out'
+// storage class. An HLSL entry point has a return value, input parameters
+// and output parameters. These need to get remapped to the AST I/O.
+void HlslParseContext::remapEntryPointIO(TFunction& function)
+{
+ // Will auto-assign locations here to the inputs/outputs defined by the entry point
+
+ const auto remapType = [&](TType& type) {
+ const auto remapBuiltInType = [&](TType& type) {
+ switch (type.getQualifier().builtIn) {
+ case EbvFragDepthGreater:
+ intermediate.setDepth(EldGreater);
+ type.getQualifier().builtIn = EbvFragDepth;
+ break;
+ case EbvFragDepthLesser:
+ intermediate.setDepth(EldLess);
+ type.getQualifier().builtIn = EbvFragDepth;
+ break;
+ default:
+ break;
+ }
+ };
+ remapBuiltInType(type);
+ if (type.isStruct()) {
+ auto members = *type.getStruct();
+ for (auto member = members.begin(); member != members.end(); ++member)
+ remapBuiltInType(*member->type);
+ }
+ };
+
+ // return value is actually a shader-scoped output (out)
+ if (function.getType().getBasicType() != EbtVoid) {
+ entryPointOutput = makeInternalVariable("@entryPointOutput", function.getType());
+ entryPointOutput->getWritableType().getQualifier().storage = EvqVaryingOut;
+ remapType(function.getWritableType());
+ }
+
+ // parameters are actually shader-scoped inputs and outputs (in or out)
+ for (int i = 0; i < function.getParamCount(); i++) {
+ TType& paramType = *function[i].type;
+ paramType.getQualifier().storage = paramType.getQualifier().isParamInput() ? EvqVaryingIn : EvqVaryingOut;
+ remapType(paramType);
+ }
+}
+
+// An HLSL function that looks like an entry point, but is not,
+// declares entry point IO built-ins, but these have to be undone.
+void HlslParseContext::remapNonEntryPointIO(TFunction& function)
+{
+ const auto remapBuiltInType = [&](TType& type) { type.getQualifier().builtIn = EbvNone; };
+
+ // return value
+ if (function.getType().getBasicType() != EbtVoid)
+ remapBuiltInType(function.getWritableType());
+
+ // parameters
+ for (int i = 0; i < function.getParamCount(); i++)
+ remapBuiltInType(*function[i].type);
+}
+
+// Handle function returns, including type conversions to the function return type
+// if necessary.
+TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
+{
+ functionReturnsValue = true;
+ TIntermTyped* converted = value;
+
+ if (currentFunctionType->getBasicType() == EbtVoid) {
+ error(loc, "void function cannot return a value", "return", "");
+ return intermediate.addBranch(EOpReturn, loc);
+ } else if (*currentFunctionType != value->getType()) {
+ converted = intermediate.addConversion(EOpReturn, *currentFunctionType, value);
+ if (converted) {
+ return intermediate.addBranch(EOpReturn, converted, loc);
+ } else {
+ error(loc, "type does not match, or is not convertible to, the function's return type", "return", "");
+ converted = value;
+ }
+ }
+
+ // The entry point needs to send any return value to the entry-point output instead.
+ // So, a subtree is built up, as a two-part sequence, with the first part being an
+ // assignment subtree, and the second part being a return with no value.
+ //
+ // Otherwise, for a non entry point, just return a return statement.
+ if (inEntryPoint) {
+ assert(entryPointOutput != nullptr); // should have been error tested at the beginning
+ TIntermSymbol* left = new TIntermSymbol(entryPointOutput->getUniqueId(), entryPointOutput->getName(),
+ entryPointOutput->getType());
+ TIntermNode* returnSequence = handleAssign(loc, EOpAssign, left, converted);
+ returnSequence = intermediate.makeAggregate(returnSequence);
+ returnSequence = intermediate.growAggregate(returnSequence, intermediate.addBranch(EOpReturn, loc));
+ returnSequence->getAsAggregate()->setOperator(EOpSequence);
+
+ return returnSequence;
+ } else
+ return intermediate.addBranch(EOpReturn, value, loc);
+}
+
void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*& arguments, TIntermTyped* newArg)
{
TParameter param = { 0, new TType };
@@ -807,6 +1040,55 @@
arguments = newArg;
}
+// Some simple source assignments need to be flattened to a sequence
+// of AST assignments. Catch these and flatten, otherwise, pass through
+// to intermediate.addAssign().
+TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) const
+{
+ const auto mustFlatten = [&](const TIntermTyped& node) {
+ return shouldFlatten(node.getType()) && node.getAsSymbolNode() &&
+ flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end();
+ };
+
+ bool flattenLeft = mustFlatten(*left);
+ bool flattenRight = mustFlatten(*right);
+ if (! flattenLeft && ! flattenRight)
+ return intermediate.addAssign(op, left, right, loc);
+
+ // If we get here, we are assigning to or from a whole struct that must be
+ // flattened, so have to do member-by-member assignment:
+ const auto& members = *left->getType().getStruct();
+ const auto getMember = [&](bool flatten, TIntermTyped* node,
+ const TVector<TVariable*>& memberVariables, int member) {
+ TIntermTyped* subTree;
+ if (flatten)
+ subTree = intermediate.addSymbol(*memberVariables[member]);
+ else {
+ subTree = intermediate.addIndex(EOpIndexDirectStruct, node,
+ intermediate.addConstantUnion(member, loc), loc);
+ subTree->setType(*members[member].type);
+ }
+
+ return subTree;
+ };
+
+ const TVector<TVariable*>* leftVariables = nullptr;
+ const TVector<TVariable*>* rightVariables = nullptr;
+ if (flattenLeft)
+ leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second;
+ if (flattenRight)
+ rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second;
+ TIntermAggregate* assignList = nullptr;
+ for (int member = 0; member < (int)members.size(); ++member) {
+ TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member);
+ TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member);
+ assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc));
+ }
+ assignList->setOperator(EOpSequence);
+
+ return assignList;
+}
+
//
// HLSL atomic operations have slightly different arguments than
// GLSL/AST/SPIRV. The semantics are converted below in decomposeIntrinsic.
@@ -998,7 +1280,7 @@
const TSampler& texSampler = texType.getSampler();
const TSamplerDim dim = texSampler.dim;
- const int numArgs = (int) argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
int numDims = 0;
@@ -1184,7 +1466,7 @@
lodComponent->setType(TType(coordBaseType, EvqTemporary, 1));
}
- const int numArgs = (int) argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
const bool hasOffset = ((!isMS && numArgs == 3) || (isMS && numArgs == 4));
// Create texel fetch
@@ -1228,7 +1510,7 @@
TIntermTyped* argLod = argAggregate->getSequence()[3]->getAsTyped();
TIntermTyped* argOffset = nullptr;
- const int numArgs = (int) argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
if (numArgs == 5) // offset, if present
argOffset = argAggregate->getSequence()[4]->getAsTyped();
@@ -1327,7 +1609,7 @@
const TSamplerDim dim = argTex->getType().getSampler().dim;
- const int argSize = argAggregate->getSequence().size();
+ const int argSize = (int)argAggregate->getSequence().size();
bool hasStatus = (argSize == (5+cmpValues) || argSize == (8+cmpValues));
bool hasOffset1 = false;
bool hasOffset4 = false;
@@ -1464,8 +1746,10 @@
case EOpGenMul:
{
// mul(a,b) -> MatrixTimesMatrix, MatrixTimesVector, MatrixTimesScalar, VectorTimesScalar, Dot, Mul
- TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped();
- TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped();
+ // Since we are treating HLSL rows like GLSL columns (the first matrix indirection),
+ // we must reverse the operand order here. Hence, arg0 gets sequence[1], etc.
+ TIntermTyped* arg0 = argAggregate->getSequence()[1]->getAsTyped();
+ TIntermTyped* arg1 = argAggregate->getSequence()[0]->getAsTyped();
if (arg0->isVector() && arg1->isVector()) { // vec * vec
node->getAsAggregate()->setOperator(EOpDot);
@@ -1965,6 +2249,16 @@
void HlslParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const
{
TIntermAggregate* aggregate = arguments->getAsAggregate();
+ const auto setArg = [&](int argNum, TIntermNode* arg) {
+ if (function.getParamCount() == 1)
+ arguments = arg;
+ else {
+ if (aggregate)
+ aggregate->getSequence()[argNum] = arg;
+ else
+ arguments = arg;
+ }
+ };
// Process each argument's conversion
for (int i = 0; i < function.getParamCount(); ++i) {
@@ -1977,16 +2271,22 @@
// In-qualified arguments just need an extra node added above the argument to
// convert to the correct type.
arg = intermediate.addConversion(EOpFunctionCall, *function[i].type, arg);
- if (arg) {
- if (function.getParamCount() == 1)
- arguments = arg;
- else {
- if (aggregate)
- aggregate->getSequence()[i] = arg;
- else
- arguments = arg;
- }
- }
+ arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg);
+ setArg(i, arg);
+ }
+ } else {
+ if (shouldFlatten(arg->getType())) {
+ TSourceLoc dummyLoc;
+ dummyLoc.init();
+ TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type);
+ internalAggregate->getWritableType().getQualifier().makeTemporary();
+ TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(),
+ internalAggregate->getName(),
+ internalAggregate->getType());
+ TIntermAggregate* assignAgg = handleAssign(dummyLoc, EOpAssign, internalSymbolNode, arg)->getAsAggregate();
+ assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode);
+ assignAgg->setOperator(EOpComma);
+ setArg(i, assignAgg);
}
}
}
@@ -2231,32 +2531,115 @@
// Handle seeing a "COLON semantic" at the end of a type declaration,
// by updating the type according to the semantic.
//
-void HlslParseContext::handleSemantic(TType& type, const TString& semantic)
+void HlslParseContext::handleSemantic(TSourceLoc loc, TQualifier& qualifier, const TString& semantic)
{
// TODO: need to know if it's an input or an output
// The following sketches what needs to be done, but can't be right
// without taking into account stage and input/output.
+
+ TString semanticUpperCase = semantic;
+ std::transform(semanticUpperCase.begin(), semanticUpperCase.end(), semanticUpperCase.begin(), ::toupper);
+ // in DX9, all outputs had to have a semantic associated with them, that was either consumed
+ // by the system or was a specific register assignment
+ // in DX10+, only semantics with the SV_ prefix have any meaning beyond decoration
+ // Fxc will only accept DX9 style semantics in compat mode
+ // Also, in DX10 if a SV value is present as the input of a stage, but isn't appropriate for that
+ // stage, it would just be ignored as it is likely there as part of an output struct from one stage
+ // to the next
- if (semantic == "PSIZE")
- type.getQualifier().builtIn = EbvPointSize;
- else if (semantic == "POSITION")
- type.getQualifier().builtIn = EbvPosition;
- else if (semantic == "FOG")
- type.getQualifier().builtIn = EbvFogFragCoord;
- else if (semantic == "DEPTH" || semantic == "SV_Depth")
- type.getQualifier().builtIn = EbvFragDepth;
- else if (semantic == "VFACE" || semantic == "SV_IsFrontFace")
- type.getQualifier().builtIn = EbvFace;
- else if (semantic == "VPOS" || semantic == "SV_Position")
- type.getQualifier().builtIn = EbvFragCoord;
- else if (semantic == "SV_ClipDistance")
- type.getQualifier().builtIn = EbvClipDistance;
- else if (semantic == "SV_CullDistance")
- type.getQualifier().builtIn = EbvCullDistance;
- else if (semantic == "SV_VertexID")
- type.getQualifier().builtIn = EbvVertexId;
- else if (semantic == "SV_ViewportArrayIndex")
- type.getQualifier().builtIn = EbvViewportIndex;
+
+ bool bParseDX9 = false;
+ if (bParseDX9) {
+ if (semanticUpperCase == "PSIZE")
+ qualifier.builtIn = EbvPointSize;
+ else if (semantic == "FOG")
+ qualifier.builtIn = EbvFogFragCoord;
+ else if (semanticUpperCase == "DEPTH")
+ qualifier.builtIn = EbvFragDepth;
+ else if (semanticUpperCase == "VFACE")
+ qualifier.builtIn = EbvFace;
+ else if (semanticUpperCase == "VPOS")
+ qualifier.builtIn = EbvFragCoord;
+ }
+
+ //SV Position has a different meaning in vertex vs fragment
+ if (semanticUpperCase == "SV_POSITION" && language != EShLangFragment)
+ qualifier.builtIn = EbvPosition;
+ else if (semanticUpperCase == "SV_POSITION" && language == EShLangFragment)
+ qualifier.builtIn = EbvFragCoord;
+ else if (semanticUpperCase == "SV_CLIPDISTANCE")
+ qualifier.builtIn = EbvClipDistance;
+ else if (semanticUpperCase == "SV_CULLDISTANCE")
+ qualifier.builtIn = EbvCullDistance;
+ else if (semanticUpperCase == "SV_VERTEXID")
+ qualifier.builtIn = EbvVertexIndex;
+ else if (semanticUpperCase == "SV_VIEWPORTARRAYINDEX")
+ qualifier.builtIn = EbvViewportIndex;
+ else if (semanticUpperCase == "SV_TESSFACTOR")
+ qualifier.builtIn = EbvTessLevelOuter;
+
+ //Targets are defined 0-7
+ else if (semanticUpperCase == "SV_TARGET") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 0;
+ } else if (semanticUpperCase == "SV_TARGET0") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 0;
+ } else if (semanticUpperCase == "SV_TARGET1") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 1;
+ } else if (semanticUpperCase == "SV_TARGET2") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 2;
+ } else if (semanticUpperCase == "SV_TARGET3") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 3;
+ } else if (semanticUpperCase == "SV_TARGET4") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 4;
+ } else if (semanticUpperCase == "SV_TARGET5") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 5;
+ } else if (semanticUpperCase == "SV_TARGET6") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 6;
+ } else if (semanticUpperCase == "SV_TARGET7") {
+ qualifier.builtIn = EbvNone;
+ //qualifier.layoutLocation = 7;
+ } else if (semanticUpperCase == "SV_SAMPLEINDEX")
+ qualifier.builtIn = EbvSampleId;
+ else if (semanticUpperCase == "SV_RENDERTARGETARRAYINDEX")
+ qualifier.builtIn = EbvLayer;
+ else if (semanticUpperCase == "SV_PRIMITIVEID")
+ qualifier.builtIn = EbvPrimitiveId;
+ else if (semanticUpperCase == "SV_OUTPUTCONTROLPOINTID")
+ qualifier.builtIn = EbvInvocationId;
+ else if (semanticUpperCase == "SV_ISFRONTFACE")
+ qualifier.builtIn = EbvFace;
+ else if (semanticUpperCase == "SV_INSTANCEID")
+ qualifier.builtIn = EbvInstanceIndex;
+ else if (semanticUpperCase == "SV_INSIDETESSFACTOR")
+ qualifier.builtIn = EbvTessLevelInner;
+ else if (semanticUpperCase == "SV_GSINSTANCEID")
+ qualifier.builtIn = EbvInvocationId;
+ else if (semanticUpperCase == "SV_GROUPTHREADID")
+ qualifier.builtIn = EbvLocalInvocationId;
+ else if (semanticUpperCase == "SV_GROUPID")
+ qualifier.builtIn = EbvWorkGroupId;
+ else if (semanticUpperCase == "SV_DOMAINLOCATION")
+ qualifier.builtIn = EbvTessCoord;
+ else if (semanticUpperCase == "SV_DEPTH")
+ qualifier.builtIn = EbvFragDepth;
+
+ //TODO, these need to get refined to be more specific
+ else if( semanticUpperCase == "SV_DEPTHGREATEREQUAL")
+ qualifier.builtIn = EbvFragDepthGreater;
+ else if( semanticUpperCase == "SV_DEPTHLESSEQUAL")
+ qualifier.builtIn = EbvFragDepthLesser;
+ else if( semanticUpperCase == "SV_STENCILREF")
+ error(loc, "unimplemented", "SV_STENCILREF", "");
+ else if( semanticUpperCase == "SV_COVERAGE")
+ error(loc, "unimplemented", "SV_COVERAGE", "");
}
//
@@ -2265,8 +2648,8 @@
// 'location' has the "c[Subcomponent]" part.
// 'component' points to the "component" part, or nullptr if not present.
//
-void HlslParseContext::handlePackOffset(const TSourceLoc& loc, TType& type, const glslang::TString& location,
- const glslang::TString* component)
+void HlslParseContext::handlePackOffset(const TSourceLoc& loc, TQualifier& qualifier, const glslang::TString& location,
+ const glslang::TString* component)
{
if (location.size() == 0 || location[0] != 'c') {
error(loc, "expected 'c'", "packoffset", "");
@@ -2279,7 +2662,7 @@
return;
}
- type.getQualifier().layoutOffset = 16 * atoi(location.substr(1, location.size()).c_str());
+ qualifier.layoutOffset = 16 * atoi(location.substr(1, location.size()).c_str());
if (component != nullptr) {
int componentOffset = 0;
switch ((*component)[0]) {
@@ -2295,7 +2678,7 @@
error(loc, "expected {x, y, z, w} for component", "packoffset", "");
return;
}
- type.getQualifier().layoutOffset += componentOffset;
+ qualifier.layoutOffset += componentOffset;
}
}
@@ -2305,9 +2688,8 @@
// 'profile' points to the shader_profile part, or nullptr if not present.
// 'desc' is the type# part.
//
-void HlslParseContext::handleRegister(const TSourceLoc& loc, TType& type, const glslang::TString* profile,
- const glslang::TString& desc,
- int subComponent)
+void HlslParseContext::handleRegister(const TSourceLoc& loc, TQualifier& qualifier, const glslang::TString* profile,
+ const glslang::TString& desc, int subComponent, const glslang::TString* spaceDesc)
{
if (profile != nullptr)
warn(loc, "ignoring shader_profile", "register", "");
@@ -2333,12 +2715,34 @@
case 't':
case 'c':
case 's':
- type.getQualifier().layoutBinding = regNumber + subComponent;
+ qualifier.layoutBinding = regNumber + subComponent;
break;
default:
warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]);
break;
}
+
+ // space
+ unsigned int setNumber;
+ const auto crackSpace = [&]() {
+ const int spaceLen = 5;
+ if (spaceDesc->size() < spaceLen + 1)
+ return false;
+ if (spaceDesc->compare(0, spaceLen, "space") != 0)
+ return false;
+ if (! isdigit((*spaceDesc)[spaceLen]))
+ return false;
+ setNumber = atoi(spaceDesc->substr(spaceLen, spaceDesc->size()).c_str());
+ return true;
+ };
+
+ if (spaceDesc) {
+ if (! crackSpace()) {
+ error(loc, "expected spaceN", "register", "");
+ return;
+ }
+ qualifier.layoutSet = setNumber;
+ }
}
//
@@ -2691,7 +3095,7 @@
// 'dst', for the purpose of error checking order for versions
// that require specific orderings of qualifiers.
//
-void HlslParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, const TQualifier& src, bool force)
+void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src)
{
// Storage qualification
if (dst.storage == EvqTemporary || dst.storage == EvqGlobal)
@@ -2702,8 +3106,6 @@
else if ((dst.storage == EvqIn && src.storage == EvqConst) ||
(dst.storage == EvqConst && src.storage == EvqIn))
dst.storage = EvqConstReadOnly;
- else if (src.storage != EvqTemporary && src.storage != EvqGlobal)
- error(loc, "too many storage qualifiers", GetStorageQualifierString(src.storage), "");
// Layout qualifiers
mergeObjectLayoutQualifiers(dst, src, false);
@@ -3093,51 +3495,58 @@
// Put the id's layout qualification into the public type, for qualifiers not having a number set.
// This is before we know any type information for error checking.
-void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publicType, TString& id)
+void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id)
{
std::transform(id.begin(), id.end(), id.begin(), ::tolower);
if (id == TQualifier::getLayoutMatrixString(ElmColumnMajor)) {
- publicType.qualifier.layoutMatrix = ElmColumnMajor;
+ qualifier.layoutMatrix = ElmColumnMajor;
return;
}
if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) {
- publicType.qualifier.layoutMatrix = ElmRowMajor;
+ qualifier.layoutMatrix = ElmRowMajor;
return;
}
if (id == "push_constant") {
requireVulkan(loc, "push_constant");
- publicType.qualifier.layoutPushConstant = true;
+ qualifier.layoutPushConstant = true;
return;
}
if (language == EShLangGeometry || language == EShLangTessEvaluation) {
if (id == TQualifier::getGeometryString(ElgTriangles)) {
- publicType.shaderQualifiers.geometry = ElgTriangles;
+ //publicType.shaderQualifiers.geometry = ElgTriangles;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (language == EShLangGeometry) {
if (id == TQualifier::getGeometryString(ElgPoints)) {
- publicType.shaderQualifiers.geometry = ElgPoints;
+ //publicType.shaderQualifiers.geometry = ElgPoints;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgLineStrip)) {
- publicType.shaderQualifiers.geometry = ElgLineStrip;
+ //publicType.shaderQualifiers.geometry = ElgLineStrip;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgLines)) {
- publicType.shaderQualifiers.geometry = ElgLines;
+ //publicType.shaderQualifiers.geometry = ElgLines;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgLinesAdjacency)) {
- publicType.shaderQualifiers.geometry = ElgLinesAdjacency;
+ //publicType.shaderQualifiers.geometry = ElgLinesAdjacency;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgTrianglesAdjacency)) {
- publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency;
+ //publicType.shaderQualifiers.geometry = ElgTrianglesAdjacency;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgTriangleStrip)) {
- publicType.shaderQualifiers.geometry = ElgTriangleStrip;
+ //publicType.shaderQualifiers.geometry = ElgTriangleStrip;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
} else {
@@ -3145,65 +3554,78 @@
// input primitive
if (id == TQualifier::getGeometryString(ElgTriangles)) {
- publicType.shaderQualifiers.geometry = ElgTriangles;
+ //publicType.shaderQualifiers.geometry = ElgTriangles;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgQuads)) {
- publicType.shaderQualifiers.geometry = ElgQuads;
+ //publicType.shaderQualifiers.geometry = ElgQuads;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getGeometryString(ElgIsolines)) {
- publicType.shaderQualifiers.geometry = ElgIsolines;
+ //publicType.shaderQualifiers.geometry = ElgIsolines;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
// vertex spacing
if (id == TQualifier::getVertexSpacingString(EvsEqual)) {
- publicType.shaderQualifiers.spacing = EvsEqual;
+ //publicType.shaderQualifiers.spacing = EvsEqual;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getVertexSpacingString(EvsFractionalEven)) {
- publicType.shaderQualifiers.spacing = EvsFractionalEven;
+ //publicType.shaderQualifiers.spacing = EvsFractionalEven;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getVertexSpacingString(EvsFractionalOdd)) {
- publicType.shaderQualifiers.spacing = EvsFractionalOdd;
+ //publicType.shaderQualifiers.spacing = EvsFractionalOdd;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
// triangle order
if (id == TQualifier::getVertexOrderString(EvoCw)) {
- publicType.shaderQualifiers.order = EvoCw;
+ //publicType.shaderQualifiers.order = EvoCw;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == TQualifier::getVertexOrderString(EvoCcw)) {
- publicType.shaderQualifiers.order = EvoCcw;
+ //publicType.shaderQualifiers.order = EvoCcw;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
// point mode
if (id == "point_mode") {
- publicType.shaderQualifiers.pointMode = true;
+ //publicType.shaderQualifiers.pointMode = true;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
}
}
if (language == EShLangFragment) {
if (id == "origin_upper_left") {
- publicType.shaderQualifiers.originUpperLeft = true;
+ //publicType.shaderQualifiers.originUpperLeft = true;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "pixel_center_integer") {
- publicType.shaderQualifiers.pixelCenterInteger = true;
+ //publicType.shaderQualifiers.pixelCenterInteger = true;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "early_fragment_tests") {
- publicType.shaderQualifiers.earlyFragmentTests = true;
+ //publicType.shaderQualifiers.earlyFragmentTests = true;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth + 1)) {
if (id == TQualifier::getLayoutDepthString(depth)) {
- publicType.shaderQualifiers.layoutDepth = depth;
+ //publicType.shaderQualifiers.layoutDepth = depth;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
}
@@ -3213,7 +3635,8 @@
if (id == TQualifier::getBlendEquationString(be)) {
requireExtensions(loc, 1, &E_GL_KHR_blend_equation_advanced, "blend equation");
intermediate.addBlendEquation(be);
- publicType.shaderQualifiers.blendEquation = true;
+ //publicType.shaderQualifiers.blendEquation = true;
+ warn(loc, "ignored", id.c_str(), "");
found = true;
break;
}
@@ -3228,7 +3651,7 @@
// Put the id's layout qualifier value into the public type, for qualifiers having a number set.
// This is before we know any type information for error checking.
-void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publicType, TString& id, const TIntermTyped* node)
+void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TQualifier& qualifier, TString& id, const TIntermTyped* node)
{
const char* feature = "layout-id value";
//const char* nonLiteralFeature = "non-literal layout-id value";
@@ -3243,38 +3666,38 @@
std::transform(id.begin(), id.end(), id.begin(), ::tolower);
if (id == "offset") {
- publicType.qualifier.layoutOffset = value;
+ qualifier.layoutOffset = value;
return;
} else if (id == "align") {
// "The specified alignment must be a power of 2, or a compile-time error results."
if (! IsPow2(value))
error(loc, "must be a power of 2", "align", "");
else
- publicType.qualifier.layoutAlign = value;
+ qualifier.layoutAlign = value;
return;
} else if (id == "location") {
if ((unsigned int)value >= TQualifier::layoutLocationEnd)
error(loc, "location is too large", id.c_str(), "");
else
- publicType.qualifier.layoutLocation = value;
+ qualifier.layoutLocation = value;
return;
} else if (id == "set") {
if ((unsigned int)value >= TQualifier::layoutSetEnd)
error(loc, "set is too large", id.c_str(), "");
else
- publicType.qualifier.layoutSet = value;
+ qualifier.layoutSet = value;
return;
} else if (id == "binding") {
if ((unsigned int)value >= TQualifier::layoutBindingEnd)
error(loc, "binding is too large", id.c_str(), "");
else
- publicType.qualifier.layoutBinding = value;
+ qualifier.layoutBinding = value;
return;
} else if (id == "component") {
if ((unsigned)value >= TQualifier::layoutComponentEnd)
error(loc, "component is too large", id.c_str(), "");
else
- publicType.qualifier.layoutComponent = value;
+ qualifier.layoutComponent = value;
return;
} else if (id.compare(0, 4, "xfb_") == 0) {
// "Any shader making any static use (after preprocessing) of any of these
@@ -3290,13 +3713,13 @@
if (value >= (int)TQualifier::layoutXfbBufferEnd)
error(loc, "buffer is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbBufferEnd - 1);
else
- publicType.qualifier.layoutXfbBuffer = value;
+ qualifier.layoutXfbBuffer = value;
return;
} else if (id == "xfb_offset") {
if (value >= (int)TQualifier::layoutXfbOffsetEnd)
error(loc, "offset is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbOffsetEnd - 1);
else
- publicType.qualifier.layoutXfbOffset = value;
+ qualifier.layoutXfbOffset = value;
return;
} else if (id == "xfb_stride") {
// "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
@@ -3306,7 +3729,7 @@
else if (value >= (int)TQualifier::layoutXfbStrideEnd)
error(loc, "stride is too large:", id.c_str(), "internal max is %d", TQualifier::layoutXfbStrideEnd - 1);
if (value < (int)TQualifier::layoutXfbStrideEnd)
- publicType.qualifier.layoutXfbStride = value;
+ qualifier.layoutXfbStride = value;
return;
}
}
@@ -3316,7 +3739,7 @@
if (value >= (int)TQualifier::layoutAttachmentEnd)
error(loc, "attachment index is too large", id.c_str(), "");
else
- publicType.qualifier.layoutAttachment = value;
+ qualifier.layoutAttachment = value;
return;
}
if (id == "constant_id") {
@@ -3324,8 +3747,8 @@
if (value >= (int)TQualifier::layoutSpecConstantIdEnd) {
error(loc, "specialization-constant id is too large", id.c_str(), "");
} else {
- publicType.qualifier.layoutSpecConstantId = value;
- publicType.qualifier.specConstant = true;
+ qualifier.layoutSpecConstantId = value;
+ qualifier.specConstant = true;
if (! intermediate.addUsedConstantId(value))
error(loc, "specialization-constant id already used", id.c_str(), "");
}
@@ -3341,7 +3764,8 @@
if (value == 0)
error(loc, "must be greater than 0", "vertices", "");
else
- publicType.shaderQualifiers.vertices = value;
+ //publicType.shaderQualifiers.vertices = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
break;
@@ -3354,24 +3778,26 @@
if (value == 0)
error(loc, "must be at least 1", "invocations", "");
else
- publicType.shaderQualifiers.invocations = value;
+ //publicType.shaderQualifiers.invocations = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "max_vertices") {
- publicType.shaderQualifiers.vertices = value;
+ //publicType.shaderQualifiers.vertices = value;
+ warn(loc, "ignored", id.c_str(), "");
if (value > resources.maxGeometryOutputVertices)
error(loc, "too large, must be less than gl_MaxGeometryOutputVertices", "max_vertices", "");
return;
}
if (id == "stream") {
- publicType.qualifier.layoutStream = value;
+ qualifier.layoutStream = value;
return;
}
break;
case EShLangFragment:
if (id == "index") {
- publicType.qualifier.layoutIndex = value;
+ qualifier.layoutIndex = value;
return;
}
break;
@@ -3379,28 +3805,34 @@
case EShLangCompute:
if (id.compare(0, 11, "local_size_") == 0) {
if (id == "local_size_x") {
- publicType.shaderQualifiers.localSize[0] = value;
+ //publicType.shaderQualifiers.localSize[0] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "local_size_y") {
- publicType.shaderQualifiers.localSize[1] = value;
+ //publicType.shaderQualifiers.localSize[1] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "local_size_z") {
- publicType.shaderQualifiers.localSize[2] = value;
+ //publicType.shaderQualifiers.localSize[2] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (spvVersion.spv != 0) {
if (id == "local_size_x_id") {
- publicType.shaderQualifiers.localSizeSpecId[0] = value;
+ //publicType.shaderQualifiers.localSizeSpecId[0] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "local_size_y_id") {
- publicType.shaderQualifiers.localSizeSpecId[1] = value;
+ //publicType.shaderQualifiers.localSizeSpecId[1] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
if (id == "local_size_z_id") {
- publicType.shaderQualifiers.localSizeSpecId[2] = value;
+ //publicType.shaderQualifiers.localSizeSpecId[2] = value;
+ warn(loc, "ignored", id.c_str(), "");
return;
}
}
@@ -3481,6 +3913,10 @@
//
// Look up a function name in the symbol table, and make sure it is a function.
//
+// First, look for an exact match. If there is none, use the generic selector
+// TParseContextBase::selectFunction() to find one, parameterized by the
+// convertible() and better() predicates defined below.
+//
// Return the function symbol if found, otherwise nullptr.
//
const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn)
@@ -3497,57 +3933,96 @@
if (symbol)
return symbol->getAsFunction();
- // exact match not found, look through a list of overloaded functions of the same name
+ // no exact match, use the generic selector, parameterized by the GLSL rules
- const TFunction* candidate = nullptr;
- TVector<TFunction*> candidateList;
+ // create list of candidates to send
+ TVector<const TFunction*> candidateList;
symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
+
+ // can 'from' convert to 'to'?
+ const auto convertible = [this](const TType& from, const TType& to) {
+ if (from == to)
+ return true;
- for (TVector<TFunction*>::const_iterator it = candidateList.begin(); it != candidateList.end(); ++it) {
- const TFunction& function = *(*it);
+ // no aggregate conversions
+ if (from.isArray() || to.isArray() ||
+ from.isStruct() || to.isStruct())
+ return false;
- // to even be a potential match, number of arguments has to match
- if (call.getParamCount() != function.getParamCount())
- continue;
+ // basic types have to be convertible
+ if (! intermediate.canImplicitlyPromote(from.getBasicType(), to.getBasicType(), EOpFunctionCall))
+ return false;
- bool possibleMatch = true;
- for (int i = 0; i < function.getParamCount(); ++i) {
- // same types is easy
- if (*function[i].type == *call[i].type)
- continue;
+ // shapes have to be convertible
+ if ((from.isScalar() && to.isScalar()) ||
+ (from.isScalar() && to.isVector()) ||
+ (from.isVector() && to.isVector() && from.getVectorSize() >= to.getVectorSize()))
+ return true;
- // We have a mismatch in type, see if it is implicitly convertible
+ // TODO: what are the matrix rules? they go here
- if (function[i].type->isArray() || call[i].type->isArray() ||
- ! function[i].type->sameElementShape(*call[i].type))
- possibleMatch = false;
- else {
- // do direction-specific checks for conversion of basic type
- if (function[i].type->getQualifier().isParamInput()) {
- if (! intermediate.canImplicitlyPromote(call[i].type->getBasicType(), function[i].type->getBasicType()))
- possibleMatch = false;
- }
- if (function[i].type->getQualifier().isParamOutput()) {
- if (! intermediate.canImplicitlyPromote(function[i].type->getBasicType(), call[i].type->getBasicType()))
- possibleMatch = false;
- }
+ return false;
+ };
+
+ // Is 'to2' a better conversion than 'to1'?
+ // Ties should not be considered as better.
+ // Assumes 'convertible' already said true.
+ const auto better = [](const TType& from, const TType& to1, const TType& to2) {
+ // exact match is always better than mismatch
+ if (from == to2)
+ return from != to1;
+ if (from == to1)
+ return false;
+
+ // shape changes are always worse
+ if (from.isScalar() || from.isVector()) {
+ if (from.getVectorSize() == to2.getVectorSize() &&
+ from.getVectorSize() != to1.getVectorSize())
+ return true;
+ if (from.getVectorSize() == to1.getVectorSize() &&
+ from.getVectorSize() != to2.getVectorSize())
+ return false;
+ }
+
+ // Might or might not be changing shape, which means basic type might
+ // or might not match, so within that, the question is how big a
+ // basic-type conversion is being done.
+ //
+ // Use a hierarchy of domains, translated to order of magnitude
+ // in a linearized view:
+ // - floating-point vs. integer
+ // - 32 vs. 64 bit (or width in general)
+ // - bool vs. non bool
+ // - signed vs. not signed
+ const auto linearize = [](const TBasicType& basicType) {
+ switch (basicType) {
+ case EbtBool: return 1;
+ case EbtInt: return 10;
+ case EbtUint: return 11;
+ case EbtInt64: return 20;
+ case EbtUint64: return 21;
+ case EbtFloat: return 100;
+ case EbtDouble: return 110;
+ default: return 0;
}
- if (! possibleMatch)
- break;
- }
- if (possibleMatch) {
- if (candidate) {
- // our second match, meaning ambiguity
- error(loc, "ambiguous function signature match: multiple signatures match under implicit type conversion", call.getName().c_str(), "");
- } else
- candidate = &function;
- }
- }
+ };
- if (candidate == nullptr)
+ return std::abs(linearize(to2.getBasicType()) - linearize(from.getBasicType())) <
+ std::abs(linearize(to1.getBasicType()) - linearize(from.getBasicType()));
+ };
+
+ // for ambiguity reporting
+ bool tie = false;
+
+ // send to the generic selector
+ const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie);
+
+ if (bestMatch == nullptr)
error(loc, "no matching overloaded function found", call.getName().c_str(), "");
+ else if (tie)
+ error(loc, "ambiguous best function under implicit type conversion", call.getName().c_str(), "");
- return candidate;
+ return bestMatch;
}
//
@@ -3584,6 +4059,11 @@
//
TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* arraySizes, TIntermTyped* initializer)
{
+ // string identifiers can nest inside < ... >, apparently with their own namespace,
+ // which is not implemented
+ if (parseType.getBasicType() == EbtString)
+ return nullptr;
+
TType type;
type.shallowCopy(parseType);
if (type.isImplicitlySizedArray()) {
@@ -3833,15 +4313,21 @@
return nullptr;
}
} else if (type.isMatrix()) {
- if (type.getMatrixCols() != (int)initList->getSequence().size()) {
- error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
- return nullptr;
- }
- TType vectorType(type, 0); // dereferenced type
- for (int i = 0; i < type.getMatrixCols(); ++i) {
- initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
- if (initList->getSequence()[i] == nullptr)
+ if (type.computeNumComponents() == (int)initList->getSequence().size()) {
+ // This means the matrix is initialized component-wise, rather than as
+ // a series of rows and columns. We can just use the list directly as
+ // a constructor; no further processing needed.
+ } else {
+ if (type.getMatrixCols() != (int)initList->getSequence().size()) {
+ error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str());
return nullptr;
+ }
+ TType vectorType(type, 0); // dereferenced type
+ for (int i = 0; i < type.getMatrixCols(); ++i) {
+ initList->getSequence()[i] = convertInitializerList(loc, vectorType, initList->getSequence()[i]->getAsTyped());
+ if (initList->getSequence()[i] == nullptr)
+ return nullptr;
+ }
}
} else if (type.isVector()) {
if (type.getVectorSize() != (int)initList->getSequence().size()) {
@@ -4149,7 +4635,7 @@
}
TQualifier newMemberQualification = defaultQualification;
- mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false);
+ mergeQualifiers(newMemberQualification, memberQualifier);
memberQualifier = newMemberQualification;
}
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index 92641a8..ea76341 100755
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -83,9 +83,18 @@
TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
- TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
+ bool shouldFlatten(const TType&) const;
+ void flatten(const TVariable& variable);
+ TIntermTyped* flattenAccess(TIntermTyped* base, int member);
+ void assignLocations(TVariable& variable);
+ TFunction& handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&);
+ void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node);
+ void remapEntryPointIO(TFunction& function);
+ void remapNonEntryPointIO(TFunction& function);
+ TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg);
+ TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right) const;
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*);
void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
@@ -94,11 +103,11 @@
TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const;
void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
- void handleSemantic(TType& type, const TString& semantic);
- void handlePackOffset(const TSourceLoc&, TType& type, const glslang::TString& location,
+ void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic);
+ void handlePackOffset(const TSourceLoc&, TQualifier&, const glslang::TString& location,
const glslang::TString* component);
- void handleRegister(const TSourceLoc&, TType& type, const glslang::TString* profile, const glslang::TString& desc,
- int subComponent);
+ void handleRegister(const TSourceLoc&, TQualifier&, const glslang::TString* profile, const glslang::TString& desc,
+ int subComponent, const glslang::TString*);
TIntermAggregate* handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler);
@@ -120,15 +129,15 @@
void boolCheck(const TSourceLoc&, const TIntermTyped*);
void globalQualifierFix(const TSourceLoc&, TQualifier&);
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
- void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force);
+ void mergeQualifiers(TQualifier& dst, const TQualifier& src);
int computeSamplerTypeIndex(TSampler&);
TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&, bool& newDeclaration);
void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes);
void paramFix(TType& type);
void specializationCheck(const TSourceLoc&, const TType&, const char* op);
- void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&);
- void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&, const TIntermTyped*);
+ void setLayoutQualifier(const TSourceLoc&, TQualifier&, TString&);
+ void setLayoutQualifier(const TSourceLoc&, TQualifier&, TString&, const TIntermTyped*);
void mergeObjectLayoutQualifiers(TQualifier& dest, const TQualifier& src, bool inheritOnly);
void checkNoShaderLayouts(const TSourceLoc&, const TShaderQualifiers&);
@@ -176,7 +185,7 @@
int structNestingLevel; // 0 if outside blocks and structures
int controlFlowNestingLevel; // 0 if outside all flow control
TList<TIntermSequence*> switchSequenceStack; // case, node, case, case, node, ...; ensure only one node between cases; stack of them for nesting
- bool inEntrypoint; // if inside a function, true if the function is the entry point
+ bool inEntryPoint; // if inside a function, true if the function is the entry point
bool postMainReturn; // if inside a function, true if the function is the entry point and this is after a return statement
const TType* currentFunctionType; // the return type of the function that's currently being parsed
bool functionReturnsValue; // true if a non-void function has a return
@@ -187,7 +196,6 @@
HlslParseContext& operator=(HlslParseContext&);
static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex()
- bool afterEOF;
TQualifier globalBufferDefaults;
TQualifier globalUniformDefaults;
TQualifier globalInputDefaults;
@@ -195,6 +203,7 @@
TString currentCaller; // name of last function body entered (not valid when at global scope)
TIdSetType inductiveLoopIds;
TVector<TIntermTyped*> needsIndexLimitationChecking;
+ TVariable* entryPointOutput;
//
// Geometry shader input arrays:
@@ -229,6 +238,10 @@
// array-sizing declarations
//
TVector<TSymbol*> ioArraySymbolResizeList;
+
+ TMap<int, TVector<TVariable*>> flattenMap;
+ unsigned int nextInLocation;
+ unsigned int nextOutLocation;
};
} // end namespace glslang
diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp
index 721da62..3f72599 100755
--- a/hlsl/hlslParseables.cpp
+++ b/hlsl/hlslParseables.cpp
@@ -218,7 +218,6 @@
glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1)
{
const bool isTranspose = (argOrder[0] == '^');
- const bool isMatMul = (argOrder[0] == '#');
const bool isTexture = IsTextureType(argOrder[0]);
const bool isArrayed = IsTextureArrayed(argOrder[0]);
const bool isSampler = IsSamplerType(argType[0]);
@@ -229,8 +228,6 @@
if (isTranspose) { // Take transpose of matrix dimensions
std::swap(dim0, dim1);
- } else if (isMatMul) {
- dim0 = dim1; // set vector dimension to mat col
} else if (isTexture) {
if (type == 'F') // map base type to texture of that type.
type = 'T'; // e.g, int -> itexture, uint -> utexture, etc.
@@ -240,7 +237,7 @@
type = 'u';
}
- if (isTranspose || isMatMul)
+ if (isTranspose)
++argOrder;
char order = *argOrder;
@@ -312,16 +309,14 @@
switch (order) {
case '-': break; // no dimensions for voids
case 'S': break; // no dimensions on scalars
- case 'V': s += ('0' + char(dim0)); break;
+ case 'V':
+ s += ('0' + char(dim0));
+ break;
case 'M':
- {
- if (!UseHlslTypes) // GLSL has column first for mat types
- std::swap(dim0, dim1);
- s += ('0' + char(dim0));
- s += 'x';
- s += ('0' + char(dim1));
- break;
- }
+ s += ('0' + char(dim0));
+ s += 'x';
+ s += ('0' + char(dim1));
+ break;
default:
break;
}
@@ -427,6 +422,7 @@
const int retRows = xRows;
const int retCols = yCols;
+ // Create a mat * mat of the appropriate dimensions
AppendTypeName(s, "M", "F", retRows, retCols); // add return type
s.append(" "); // space between type and name
s.append("mul"); // intrinsic name
@@ -438,6 +434,31 @@
s.append(");\n"); // close paren
}
+
+ // Create M*V
+ AppendTypeName(s, "V", "F", xRows, 1); // add return type
+ s.append(" "); // space between type and name
+ s.append("mul"); // intrinsic name
+ s.append("("); // open paren
+
+ AppendTypeName(s, "M", "F", xRows, xCols); // add X input
+ s.append(", ");
+ AppendTypeName(s, "V", "F", xCols, 1); // add Y input
+
+ s.append(");\n"); // close paren
+
+
+ // Create V*M
+ AppendTypeName(s, "V", "F", xCols, 1); // add return type
+ s.append(" "); // space between type and name
+ s.append("mul"); // intrinsic name
+ s.append("("); // open paren
+
+ AppendTypeName(s, "V", "F", xRows, 1); // add Y input
+ s.append(", ");
+ AppendTypeName(s, "M", "F", xRows, xCols); // add X input
+
+ s.append(");\n"); // close paren
}
}
}
@@ -453,8 +474,24 @@
void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/)
{
static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1);
- static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask);
- static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask);
+
+ // These are the actual stage masks defined in the documentation, in case they are
+ // needed for furture validation. For now, they are commented out, and set below
+ // to EShLangAll, to allow any intrinsic to be used in any shader, which is legal
+ // if it is not called.
+ //
+ // static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask);
+ // static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask);
+ // static const EShLanguageMask EShLangCS = EShLangComputeMask;
+ // static const EShLanguageMask EShLangPS = EShLangFragmentMask;
+ // static const EShLanguageMask EShLangHS = EShLangTessControlMask;
+
+ // This set uses EShLangAll for everything.
+ static const EShLanguageMask EShLangPSCS = EShLangAll;
+ static const EShLanguageMask EShLangVSPSGS = EShLangAll;
+ static const EShLanguageMask EShLangCS = EShLangAll;
+ static const EShLanguageMask EShLangPS = EShLangAll;
+ static const EShLanguageMask EShLangHS = EShLangAll;
// This structure encodes the prototype information for each HLSL intrinsic.
// Because explicit enumeration would be cumbersome, it's procedurally generated.
@@ -466,7 +503,6 @@
// '>' as first letter of order creates an output parameter
// '<' as first letter of order creates an input parameter
// '^' as first letter of order takes transpose dimensions
- // '#' as first letter of order sets rows=cols for mats
// '%' as first letter of order creates texture of given F/I/U type (texture, itexture, etc)
// '@' as first letter of order creates arrayed texture of given type
// '$' / '&' as first letter of order creates 2DMS / 2DMSArray textures
@@ -486,8 +522,8 @@
{ "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll },
{ "acos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "all", "S", "B", "SVM", "BFI", EShLangAll },
- { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
- { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS },
+ { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "any", "S", "B", "SVM", "BFI", EShLangAll },
{ "asdouble", "S", "D", "S,", "U,", EShLangAll },
{ "asdouble", "V2", "D", "V2,", "U,", EShLangAll },
@@ -500,29 +536,29 @@
{ "ceil", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS },
{ "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll },
- { "clip", "-", "-", "SVM", "F", EShLangFragmentMask },
+ { "clip", "-", "-", "SVM", "F", EShLangPS },
{ "cos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "cosh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "countbits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "cross", nullptr, nullptr, "V3,", "F,", EShLangAll },
{ "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll },
- { "ddx", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
+ { "ddx", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangPS },
{ "degrees", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "determinant", "S", "F", "M", "F", EShLangAll },
{ "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangPSCS },
- { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "distance", "S", "F", "V,", "F,", EShLangAll },
{ "dot", "S", nullptr, "V,", "FI,", EShLangAll },
{ "dst", nullptr, nullptr, "V4,", "F,", EShLangAll },
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
- { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
- { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
+ { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangPS },
+ { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangPS },
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
@@ -535,11 +571,11 @@
{ "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "frac", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
- { "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
+ { "fwidth", nullptr, nullptr, "SVM", "F", EShLangPS },
{ "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll },
{ "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll },
- { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
- { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS },
+ { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
@@ -576,24 +612,22 @@
{ "mul", "M", nullptr, "S,M", "FI,", EShLangAll },
{ "mul", "V", nullptr, "V,S", "FI,", EShLangAll },
{ "mul", "S", nullptr, "V,V", "FI,", EShLangAll },
- { "mul", "#V", nullptr, "V,M", "FI,", EShLangAll },
{ "mul", "M", nullptr, "M,S", "FI,", EShLangAll },
- { "mul", "V", nullptr, "M,#V", "FI,", EShLangAll },
// mat*mat form of mul is handled in createMatTimesMat()
- { "noise", "S", "F", "V", "F", EShLangFragmentMask },
+ { "noise", "S", "F", "V", "F", EShLangPS },
{ "normalize", nullptr, nullptr, "V", "F", EShLangAll },
{ "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll },
// { "printf", "-", "-", "", "", EShLangAll }, TODO: varargs
- { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
+ { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangHS },
+ { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
{ "radians", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll },
{ "reflect", nullptr, nullptr, "V,", "F,", EShLangAll },
@@ -611,48 +645,48 @@
{ "step", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "tan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tanh", nullptr, nullptr, "SVM", "F", EShLangAll },
- { "tex1D", "V4", "F", "V1,S", "S,F", EShLangFragmentMask },
- { "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangFragmentMask },
- { "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangFragmentMask },
- { "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex2D", "V4", "F", "V2,", "S,F", EShLangFragmentMask },
- { "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
- { "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
- { "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex3D", "V4", "F", "V3,", "S,F", EShLangFragmentMask },
- { "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
- { "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
- { "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangFragmentMask },
- { "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
- { "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
- { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
- { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
- { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
+ { "tex1D", "V4", "F", "V1,S", "S,F", EShLangPS },
+ { "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangPS },
+ { "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangPS },
+ { "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex2D", "V4", "F", "V2,", "S,F", EShLangPS },
+ { "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangPS },
+ { "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangPS },
+ { "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex3D", "V4", "F", "V3,", "S,F", EShLangPS },
+ { "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangPS },
+ { "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangPS },
+ { "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangPS },
+ { "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS },
+ { "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangPS },
+ { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS },
+ { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangPS },
+ { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangPS },
{ "transpose", "^M", nullptr, "M", "F", EShLangAll },
{ "trunc", nullptr, nullptr, "SVM", "F", EShLangAll },
// Texture object methods. Return type can be overridden by shader declaration.
// !O = no offset, O = offset
- { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangFragmentMask },
- { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangFragmentMask },
+ { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangPS },
+ { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS },
- { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangFragmentMask },
- { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangFragmentMask },
+ { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangPS },
+ { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangPS },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
- { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangFragmentMask },
- { "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangFragmentMask },
+ { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangPS },
+ { "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangPS },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
- { "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
- { "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
+ { "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangPS },
+ { "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangPS },
{ "SampleGrad", /*!O*/ "V4", nullptr, "%@,S,V,,", "FIU,S,F,,", EShLangAll },
{ "SampleGrad", /* O*/ "V4", nullptr, "%@,S,V,,,", "FIU,S,F,,,I", EShLangAll },
@@ -668,8 +702,8 @@
{ "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll },
{ "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll },
- { "CalculateLevelOfDetail", "S", "F", "%@,S,V", "FUI,S,F", EShLangFragmentMask },
- { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangFragmentMask },
+ { "CalculateLevelOfDetail", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS },
+ { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS },
{ "GetSamplePosition", "V2", "F", "$&2,S", "FUI,I", EShLangVSPSGS },
diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp
index da39321..edeee64 100755
--- a/hlsl/hlslScanContext.cpp
+++ b/hlsl/hlslScanContext.cpp
@@ -38,7 +38,7 @@
// HLSL scanning, leveraging the scanning done by the preprocessor.
//
-#include <string.h>
+#include <cstring>
#include <unordered_map>
#include <unordered_set>
@@ -117,10 +117,12 @@
(*KeywordMap)["in"] = EHTokIn;
(*KeywordMap)["out"] = EHTokOut;
(*KeywordMap)["inout"] = EHTokInOut;
+ (*KeywordMap)["layout"] = EHTokLayout;
(*KeywordMap)["Buffer"] = EHTokBuffer;
(*KeywordMap)["vector"] = EHTokVector;
(*KeywordMap)["matrix"] = EHTokMatrix;
+ (*KeywordMap)["string"] = EHTokString;
(*KeywordMap)["void"] = EHTokVoid;
(*KeywordMap)["bool"] = EHTokBool;
@@ -410,6 +412,11 @@
return token;
}
+ case PpAtomConstString: {
+ parserToken->string = NewPoolTString(ppToken.name);
+ return EHTokStringConstant;
+ }
+
case EndOfInput: return EHTokNone;
default:
@@ -457,12 +464,15 @@
case EHTokIn:
case EHTokOut:
case EHTokInOut:
+ case EHTokPrecise:
+ case EHTokLayout:
return keyword;
// template types
case EHTokBuffer:
case EHTokVector:
case EHTokMatrix:
+ case EHTokString:
return keyword;
// scalar types
diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h
index d72b2cd..9e23cc7 100755
--- a/hlsl/hlslTokens.h
+++ b/hlsl/hlslTokens.h
@@ -64,11 +64,13 @@
EHTokIn,
EHTokOut,
EHTokInOut,
+ EHTokLayout,
// template types
EHTokBuffer,
EHTokVector,
EHTokMatrix,
+ EHTokString,
// scalar types
EHTokVoid,
@@ -222,6 +224,7 @@
EHTokIntConstant,
EHTokUintConstant,
EHTokBoolConstant,
+ EHTokStringConstant,
// control flow
EHTokFor,